iOS stringWithFormat 和 initWithFormat區(qū)別

在非ARC環(huán)境下,循環(huán)構造1w個NSString,

首先是stringWithFormat,占用內存0.52M

for (int i = 0; i < 10000; i++) {

? ? ? ? [NSString stringWithFormat:@“%d”,abcdefg];

? ? }

然后加上@autoreleasepool,占用內存52KB

for (int i = 0; i < 10000; i++) {

? ? ? ? @autoreleasepool {

? ? ? ? ? ? [NSString stringWithFormat:@"%d", abcdefg];

? ? ? ? }

? ? }

再來試試initWithFormat,占用內存0.36MB

for (int i = 0; i < 10000; i++) {

? ? ? ? [[NSString alloc] initWithFormat:@"%d", abcdefg];

? ? }

再加上autorelease尾巴和autoreleasepool,占用內存52KB

for (int i = 0; i < 10000; i++) {

? ? ? ? @autoreleasepool {

? ? ? ? ? ? [[[NSString alloc] initWithFormat:@"%d", abcdefg] autorelease];

? ? ? ? }

? ? }

結論:

+ stringWithFormat:

類方法,返回一個autorelease的NSString實例,不用手動Release,在自動釋放池中會自動釋放。

– initWithFormat:

實例方法,返回一個自己Alloc申請內存的NSString實例,根據OC內存管理黃金法則,管殺管埋,它則需要自己手動Release。

因為這兩個方法只是在沒有使用ARC的時候有所不同,一個需要手動Release一個則是自動進入autoreleasepool,所以在使用ARC的時候他們倆幾乎沒有什么區(qū)別。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容