2013-05-16
1、dealloc調用時機,正常情況下是在引用計數爲0時,系統會自動調用。但是有意外,就是在對象中開啓新的線程並且沒有執行完的時候,即使引用計數爲0也不會被調用。比如開啓NSTimer、GCD開啓新的線程……
2、viewWithTag到底有多深?根據tag可以獲得的子View不只是兒子層,還包括孫子,甚至曾孫子,也就是所有。
This method searches the current view and all of its subviews for the specified view.
3、UIImageView的userInteractionEnabled屬性默認值是NO,所以在它上面添加按鈕之類的子view時要注意設置它的值爲YES。
This property is inherited from the UIView parent class. This class changes the default value of this property to NO.
2013-05-23
1、創建plist文件,並寫入讀出
其中XXXXXX代表NSString、NSArray、NSDictionary、NSData。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [paths objectAtIndex:0]; NSLog(@"path = %@", path); NSString *fileName = [path stringByAppendingPathComponent:@"fileName.plist"]; NSFileManager *fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:fileName]) { [fileManager createFileAtPath:fileName contents:nil attributes:nil]; } // 寫入 [xxx writeToFile:fileName atomically:YES]; // 讀出 XXXXXX *xxx = [XXXXXX xxxxxxWithContentsOfFile:filename];
解釋一下writeToFile:atomically:方法中atomically參數的意義:如果爲YES則保證文件的寫入原子性,就是說會先創建一個臨時文件,直到文件內容寫入成功再導入到目標文件裏;如果爲NO,則直接寫入目標文件裏。
2013-05-24
1、判斷當前網絡是何運行商,首先導入CoreTelephony.framework
#import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <CoreTelephony/CTCarrier.h> typedef enum { TelNetworkInfoErr,// 不是運行商,可能是wifi甚至是無網絡 TelNetworkInfoMobile,// 移動 TelNetworkInfoUnicom,// 聯通 TelNetworkInfoTelecom// 電信 }TelNetworkInfo; - (TelNetworkInfo)getTelNetworkInfo { CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [info subscriberCellularProvider]; if (carrier == nil) { [info release]; return TelNetworkInfoErr; } NSString *code = [carrier mobileNetworkCode]; if ([code isEqualToString:@"00"] || [code isEqualToString:@"02"] || [code isEqualToString:@"07"]) { [info release]; return TelNetworkInfoMobile; } if ([code isEqualToString:@"01"]|| [code isEqualToString:@"06"]) { [info release]; return TelNetworkInfoUnicom; } if ([code isEqualToString:@"03"]|| [code isEqualToString:@"05"]) { [info release]; return TelNetworkInfoTelecom; } [info release]; return TelNetworkInfoErr; }
2013-5-29
1、OC動態特性
動態類型(Dynamic typing)運行時才決定對象的類型,簡單的說就是id類型(可以指向任何類型的指針或者可以理解爲指向任何未知類型的指針)。
動態綁定(Dynamic binding)基於動態類型,在某個實例確定後,其類型便被確定了,該對象的屬性和響應的對象的屬性和響應的消息也被完全確定了。
動態加載(Dynamic loading)根據需求加載所需要的資源,如圖片。
2、Frame、Bounds和Center的區別和聯繫
Frame 描述當前視圖在其父視圖中的位置和大小
Bounds 描述當前視圖在其自身座標系統中的位置和大小
Center 描述當前視圖的中心在其父視圖中的位置
三個屬性都是相互關聯的相互影響的,其中要改變了,其他的屬性也會改變。對視圖進行旋轉、縮放也都是相對於Center進行操作的。
2013-6-2
1、ios中獲取一個唯一的字符串(利用UUID)
- (NSString *)getUniqueStrByUUID { CFUUIDRef uuidRef = CFUUIDCreate(NULL); CFStringRef uuidStrRef= CFUUIDCreateString(NULL, uuidRef); CFRelease(uuidRef); NSString *retStr = [NSString stringWithString:(NSString *)uuidStrRef]; CFRelease(uuidStrRef); return retStr; }
2、ios判斷系統版本
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO) // 用時候直接 if (iPhone5) do something
另外,如果代碼寫界面的話,在iPhone5下View的高是568
期待下次更新……