2011-04-25 53 views
2

請幫助新手進行iPhone開發。在我的應用程序中,我做了很多,儀器將其顯示爲泄漏。什麼是正確的方法來做到這一點?何時發佈一個暫時的NSString StringWithFormat?

我想重新格式化數字數據作爲一個字符串在NSMutableDictionary對象中使用。所以,我認爲這將是巨大的,如果我做了這樣的事情:

[myDict setObject:[NSString stringWithFormat:@"%d", section] forKey:@"Category"]; 

我討厭必須寫3行做...

NSString *cat = [NSString stringWithFormat:@"%d", section]; 
[myDict setObject:cat forKey:@"Category"]; 
[cat release]; 

如果非要我會,但對於這種短暫使用,最佳做法是什麼?

回答

8

你不需要釋放它。由於stringWithFormat並非以alloc,init,new,copymutableCopy開頭,因此除非您明確保留它,否則不承擔任何責任。

當儀器向您顯示泄漏時,它會向您顯示泄漏對象的分配位置,但不一定是實際導致泄漏的代碼。我懷疑你正在泄漏myDict,因此裏面的所有對象也都泄漏了。

+0

謝謝!我會發布關於字典內存管理的後續問題...... – 2011-04-26 02:38:30

2

你永遠不會釋放它。它已經被autoreleased了。

你永遠只能釋放出通過了名稱開頭+alloc方法,+new-copy-mutableCopy,或-retain給你的對象。如果名稱以其他任何內容開頭,則您不擁有它,並且不負責釋放它。