2011-03-09 84 views
0

我真的與iOS SDK釋放的NSString對象

工作如果我有

NSString *str = @"Something cool"; 
NSLog(@"Text : %@", str); 

我應該使用

[str release]; 

回答

1

NO。

創建字符串

創建一個字符串 對象的源代碼是使用 的Objective-C @最簡單的方法 「...」 結構:

的NSString * TEMP = @」的/ tmp /從零開始「;注意 ,當以這種方式創建字符串常量 時,應該避免使用除7位ASCII 字符以外的任何其他 。這樣的對象在編譯時創建爲 ,並且在整個 中存在您的程序執行。編譯器 在每個模塊基礎上使這些對象常量在 上唯一,並且它們從不從 解除分配,儘管您可以保留並且 釋放它們,就像您執行其他任何 對象一樣。您也可以 直接發送消息給一個字符串常量,你 做任何其他字符串:

BOOL相同= [@「比較」 isEqualToString:myString的]。

+0

如果我使用 dict = [NSDictionary dictionaryWithObjects:@「foo」,@「bar」,@「baz」forKeys:@「one」,@「two」,@「three」 count:3]; 沒有必要釋放它,因爲它是工廠方法,而不是對象,對不對? – prista 2011-03-09 14:55:39

0

不是。它是一個自動釋放對象。 你應該只發佈一個你分配的對象[[NSString alloc] init]]

0

如果你使用的是autoreleasepool(通常是iOS應用),你不必釋放實例。

+0

通常情況下,您必須釋放您負責的對象 - 這意味着您是所有者。根據http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html#//apple_ref/doc/uid/20000043-BEHDEDDB這是你的情況使用名稱以「alloc」或「new」開頭或包含「copy」(例如alloc,newObject或mutableCopy)的方法創建。 – duselbaer 2011-03-09 14:24:41

0

不,你只需要考慮在使用alloc時釋放一個對象。