以下是开发过程中遇到的一些小知识做下记录,方便查询
1、获取应用程序根目录?$(SRCROOT)
2、使导航栏不透明 self.navigationController.navigationBar.translucent = NO;
3、隐藏tabBar self.hidesBottomBarWhenPushed = YES;
4、计时器
NSTimer 声明一个计时器必须在在视图消失之前释放掉他
[_hudTimerinvalidate];
//重新启动计时器
[_hudTimersetFireDate:[NSDatedistantPast]];
//暂停计时器
[_hudTimersetFireDate:[NSDatedistantFuture]];
5、KVC应用场景
使用textFiled时,改变textFiled失去、获取焦点时placehold的颜色。
实现原理:通过runtime来获取UITextFiled所有的成员属性,找到其中placeholderLabel这个属性,设置这个属性的textColor。重写textFiled的becomeFirstResponder(键盘弹出)、resignFirstResponder(键盘收回),通过kvc设置placeholderLabel的颜色。
- (BOOL)becomeFirstResponder{
[self setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
return [super becomeFirstResponder];
}
- (BOOL)resignFirstResponder{
[self setValue:[UIColor greenColor] forKeyPath:@"_placeholderLabel.textColor"];
return [super resignFirstResponder];
}
6、iOS程序之间的通信
由于ios程序本身采用沙盒结构,比较封闭。各个app间是比较独立的。但是ios还提供了一些app间通信的接口。
可以利用这些接口,做些东西。
1。判断系统里是否安装了某个app。比如新浪微博应用注册了URL scheme为@"weibo",我们可以通过
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"weibo://"]]来判断系统里是否发装了新浪微博。
2。从一个应用里启动另一个应用。可以通过接口
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"weibo://"]]来启动微博。参数要根据微博里规定的方式传递,一般就像http的get方式传参一样。当然启动以后,自己的应用就会退到后台,想要再切回来,就要在自己的应用里也注册URL scheme。做为回调参数传给微博app。
7、NSString方法梳理
+ (NSString *)pathWithComponents(NSArray *)components
根据components中的元素来构建路径.
- (NSArray *)pathComponents
解析路径,返回构成路径的各个部分.
- (NSString *)lastPathComponent
提取路径中的最后一个组成部分
- (NSString *)pathExtension
从路径中最后一个组成部分中提取扩展名
- (NSString *)stringByAppendingPathComponent(NSString *)path
将path添加到现有路径末尾
- (NSString *)stringByAppendingPathExtension(NSString *)ext
将指定的扩展名添加到现有路径的最后一个组成部分上
- (NSString *)stringByDeletingLastPathComponent
删除路径中的最后一个组成部分
- (NSString *)stringByDeletingPathExtension
从文件的最后一部分删除扩展名
- (NSString *)stringByExpandingTildeInPath
将路径中的代字符扩展成用户主目录(~)或指定用户的主目录(~user)
- (NSString *)stringByResolvingSymlinksInPath
尝试解析路径中的符号链接
- (NSString *)stringByStandardizingPath
解析路径中的~,(..)父目录,(.)当前目录和符号链接来标准化路径.
常用的NSProcessInfo类(进程相关)
+ (NSProcessInfo *)processInfo
返回当前进程信息
- (NSArray *)arguments
以NSString对象数字的形式返回当前进程的参数
- (NSDictionary *)environment
返回变量/值对字典,以描述当前的环境变量(比如PATH等等)
- (int)processIdentifier
返回进程PID
- (NSString *)processName
返回当前正在执行的进程名称
- (NSString *)globallyUniqueString
每次调用该方法时,都会返回不同的单值字符串,可以生成临时文件名
- (NSString *)hostName
返回主机系统名
-(NSUInteger)operatingSystem
返回表示操作系统的数字
- (NSString *)operatingSystemName
返回操作系统的名称
- (NSString *)operatingSystemVersionString
返回操作系统版本
- (void)setProcessNameNSString *)name
修改当前进程名(谨慎使用)
基本文件操作类: NSFileHandle
NSFileHandle类没有提供创建文件的方法,所以要创建文件需要使用FileManager方法来创建, NSFileHandle类中的文件操作方法都是假定文件都是存在的,如果不存在,则返回nil.
常用的NSFileHandle方法:
+ (id)fileHandleForReadingAtPathNSString *)path
打开一个文件准备读取
+ (id)fileHandleForWritingAtPathNSString *)path
打开一个文件准备写入
+ (id)fileHandleForUpdatingAtPathNSString *)path
打开一个文件准备更新(读取和写入)
- (NSData *)availableData
从设备或者通道返回可用的数据
- (NSData *)readDataToEndOfFile
读取其余的数据直到文件的末尾(最大值为无符号整形的最大值)
- (NSData *)readDataOfLengthNSUInteger)length
从文件读取指定字节数的内容
- (void)writeDataNSData *)data
将data写入文件
- (unsigned long long)offsetInFile
获取当前文件的偏移量
- (void)seekToFileOffsetunsigned long long)offset
设置当前文件的偏移量
- (unsigned long long)seekToEndOfFile
将当前文件的偏移量定位到文件的末尾
- (void)truncateFileAtOffset:(unsigned long long)offset
将文件的长度设置为offset字节(如需要,可填充内容)
- (void)closeFile
关闭文件
-(bool) fileHandleForReadingAtPath
文件是否可读
-(void) fileHandleForWritingAtPath
文件是否可写