2010-04-21 42 views
1

我可以使用下面的代碼來修剪字符串:是stringByTrimmingCharactersInSet:一個自動釋放字符串?

-(void) aMethod { 
// myStr from a text box 
NSString *trimedStr = [mystr stringByTrimmingCharactersInSet: 
    [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
... 
// should I release trimedStr? 
} 

不知道trimedStr結果是一個自動釋放字符串?我怎樣才能知道?

回答

4

fundamental rule of memory management in Objective-C

你把一個對象的所有權,如果你 使用其名稱 開始「黃金」或「新」或 包含方法創建「複製」(例如,分配, NEWOBJECT ,或mutableCopy),或者如果您發送一條保留消息。您是 負責使用 發佈或autorelease放棄 您擁有的對象的所有權。 任何其他時間 您收到一個對象,您不得釋放它的 。

由於名稱不是以alloc或new開頭,也不包含副本,所以它是自動發佈的。

0

是的,它是autoreleased。

運行,不要走到存儲器管理編程指南的Object Ownership Policy部分,以瞭解如何分辨。 (簡而言之,由於方法名稱不會開始「alloc」或「new」,或者包含單詞「copy」,所以您不必擁有它,也不需要釋放它。)

相關問題