你需要發佈一些非常簡單的東西嗎?objective-c內存管理問題
NSString *a = @"Hello";
//[a release]; ?
我來自一個Java/C#世界,感到困惑的事情時,應該釋放/保留...
你需要發佈一些非常簡單的東西嗎?objective-c內存管理問題
NSString *a = @"Hello";
//[a release]; ?
我來自一個Java/C#世界,感到困惑的事情時,應該釋放/保留...
不,你不需要釋放一個常量NSString,儘管如果你這樣做不會引起任何問題。常量字符串是內存管理系統的特例。由於它們的內容在編譯時已知,因此它在應用程序二進制文件中是靜態定義的,所以它在運行時永遠不必分配或釋放。出於這個原因,它的保留和釋放方法是noops。
這僅適用於常量NSStrings(以@開頭的字符串)及其免費橋接表親,常量CFStrings(使用CFSTR()宏定義))。
號只需release
對象,你init
/alloc
自己或您的實例變量在你的類dealloc
方法中。
合成的IB屬性呢? – Yaso 2010-07-05 21:46:58
取決於它們的對象類型,例如NSString是,NSInteger沒有。但正如我上面所說的,這些將以你的'dealloc'方法進行。 – 2010-07-06 02:19:59
您需要在dealloc中釋放所有IB屬性,並且您的對象已保留的所有屬性都與對象類型無關。你不釋放NSInteger的唯一原因是它不是一個對象,它是一個標量。另一方面,你會釋放一個NSNumber。 – 2010-07-06 03:32:39
我認爲這是一個重複的問題。看到這裏:http://stackoverflow.com/questions/2888217/static-nsstrings-in-objective-c/2888231#2888231 – harms 2010-07-05 21:30:48