0
問題#1:作爲一項規則,如果我不需要,我永遠不會釋放一個對象。假設stringWithUTF8String自己內部有autorelease,我不必做「return [... autorelease]」,對吧?Obj-c IOS內存管理
-(NSString*)nonNullDBString:(const unsigned char*)value {
if(value == nil) {
return @"";
} else {
return [NSString stringWithUTF8String:(char *)value];
}
}
問題2:在我的課我有屬性: 「常量uint8_t *字節;」。在dealloc方法中,我必須調用「bytes = nil;」或「免費(字節);」,或根本沒有?
問題3:對於我的類中的@property(nonatomic,retain)變量,dealloc'ing的最佳實踐是什麼,它是「self.foo = nil;」或「[foo releease](我現在在做什麼)」。此外,我不想惹KVO問題,無論他們是...
所有正確的答案,但有很多人爭論關於答案3的排他性的正確性。對於我自己,我堅持使用'self.foo = nil'在所有可寫(保留/賦值)指針屬性,你可以確信沒有內存管理規則被破壞。我聽說,雖然無法證實,即使是蘋果的人現在也這樣做。 – epologee 2011-03-19 22:48:41