我真的與iOS SDK釋放的NSString對象
工作如果我有
NSString *str = @"Something cool";
NSLog(@"Text : %@", str);
我應該使用
[str release];
?
我真的與iOS SDK釋放的NSString對象
工作如果我有
NSString *str = @"Something cool";
NSLog(@"Text : %@", str);
我應該使用
[str release];
?
NO。
創建字符串
創建一個字符串 對象的源代碼是使用 的Objective-C @最簡單的方法 「...」 結構:
的NSString * TEMP = @」的/ tmp /從零開始「;注意 ,當以這種方式創建字符串常量 時,應該避免使用除7位ASCII 字符以外的任何其他 。這樣的對象在編譯時創建爲 ,並且在整個 中存在您的程序執行。編譯器 在每個模塊基礎上使這些對象常量在 上唯一,並且它們從不從 解除分配,儘管您可以保留並且 釋放它們,就像您執行其他任何 對象一樣。您也可以 直接發送消息給一個字符串常量,你 做任何其他字符串:
BOOL相同= [@「比較」 isEqualToString:myString的]。
不是。它是一個自動釋放對象。 你應該只發佈一個你分配的對象[[NSString alloc] init]]
如果你使用的是autoreleasepool(通常是iOS應用),你不必釋放實例。
通常情況下,您必須釋放您負責的對象 - 這意味着您是所有者。根據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
不,你只需要考慮在使用alloc時釋放一個對象。
如果我使用 dict = [NSDictionary dictionaryWithObjects:@「foo」,@「bar」,@「baz」forKeys:@「one」,@「two」,@「three」 count:3]; 沒有必要釋放它,因爲它是工廠方法,而不是對象,對不對? – prista 2011-03-09 14:55:39