以下是開發過程中遇到的一些小知識做下記錄,方便查詢
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
文件是否可寫