提示 : ?為了方便查看引用計數(shù), ARC環(huán)境修改為MRC, 步驟如下
選擇項目 Target -> Build Sttings -> All -> 搜索‘a(chǎn)utomatic’ -> 把 Objective-C Automatic Reference Counting 設(shè)置為 NO岩齿,如下圖:
類型 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????? ?初始化后的retainCount
__NSCFConstantString (retain/release不起作用,系統(tǒng)進(jìn)行維護(hù),程序中內(nèi)容相同的常量字符串只有一個) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -1
__NSCFString?(retain/release有作用)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????? ? ? ? 1
__NSTaggedPointerString?(retain/release不起作用)? ? ? ? ? ? ? ? ? ? ? ? ?-1
__NSCFConstantString類型如下:
NSString *str = @"test";?//__NSCFConstantString
NSLog(@"%d",[str retainCount]); ?// -1
NSString *str = [NSString stringWithString:@"test"];?//__NSCFConstantString
NSLog(@"%d",[str retainCount]); ?// -1
__NSTaggedPointerString類型如下:
NSString *str = [NSString stringWithFormat:@"%s","test"];//__NSTaggedPointerString
NSLog(@"%d",[str retainCount]); ? // -1
?NSString *a = @"a"; NSString *b = [[a mutableCopy] copy];//__NSTaggedPointerString
NSLog(@"%d",[b retainCount]); // -1
__NSCFString類型如下 :
通過stringWithFormat構(gòu)造
?NSString *str = [NSString stringWithFormat:@"%s,%@","test",@"test"];//__NSCFString
? NSLog(@"%d",[str retainCount]); // 1
stringWithString + stringWithFormat構(gòu)造
NSString *str = [NSString stringWithString:[NSString stringWithFormat:@"test"]];//__NSCFString
NSLog(@"%d",[str retainCount]); // 1
NSString *str = [NSString stringWithString:[NSString stringWithFormat:@"%s","test"]];//__NSCFString
NSLog(@"%d",[str retainCount]); //1
NSString *str = [NSString stringWithString:[NSString stringWithFormat:@"%s,%d","test",10]];//__NSCFString
NSLog(@"%d",[str retainCount]); // 1
stringWithString+__NSTaggedPointerString(類型) 構(gòu)造
? ? NSString *str = [NSString stringWithFormat:@"%s", "str2"];//__NSTaggedPointerString
? ? NSString *str1 = [NSString stringWithString:[NSString stringWithFormat:@"%s", "str2"]];
? ? NSLog(@"%d",[str1 retainCount]); //1
stringWithString+__NSCFString(類型) 構(gòu)造
? ? NSString *str = [NSString stringWithFormat:@"%s,%d", "test",10];//__NSCFString
? ? NSString *str1 = [NSString stringWithString:str];
? ? NSLog(@"%d",[str1 retainCount]); //2
NSMutableString(對象)構(gòu)造
? NSMutableString* str = [NSMutableString stringWithString:@"test"];//__NSCFString
? NSLog(@"%d",[str retainCount]); //1