NSString的retainCount

提示 : ?為了方便查看引用計數(shù), ARC環(huán)境修改為MRC, 步驟如下

選擇項目 Target -> Build Sttings -> All -> 搜索‘automatic’ -> 把 Objective-C Automatic Reference Counting 設置為 NO,如下圖:

arc-->mrc

類型 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????????????? ?初始化后的retainCount

__NSCFConstantString (retain/release不起作用,系統(tǒng)進行維護,程序中內容相同的常量字符串只有一個) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -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構造

?NSString *str = [NSString stringWithFormat:@"%s,%@","test",@"test"];//__NSCFString

? NSLog(@"%d",[str retainCount]); // 1

stringWithString + stringWithFormat構造

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(類型) 構造

? ? NSString *str = [NSString stringWithFormat:@"%s", "str2"];//__NSTaggedPointerString

? ? NSString *str1 = [NSString stringWithString:[NSString stringWithFormat:@"%s", "str2"]];

? ? NSLog(@"%d",[str1 retainCount]); //1

stringWithString+__NSCFString(類型) 構造

? ? NSString *str = [NSString stringWithFormat:@"%s,%d", "test",10];//__NSCFString

? ? NSString *str1 = [NSString stringWithString:str];

? ? NSLog(@"%d",[str1 retainCount]); //2

NSMutableString(對象)構造

? NSMutableString* str = [NSMutableString stringWithString:@"test"];//__NSCFString

? NSLog(@"%d",[str retainCount]); //1

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容