[英]Obj-c IOS Memory Management
問題#1 :通常,如果不需要,我永遠不會釋放對象。 假設stringWithUTF8String內部具有自動釋放功能,則不必執行“返回[...自動釋放]”,對嗎?
-(NSString*)nonNullDBString:(const unsigned char*)value {
if(value == nil) {
return @"";
} else {
return [NSString stringWithUTF8String:(char *)value];
}
}
問題2 :在我的課堂上,我具有以下屬性:“ const uint8_t * bytes;”。 在dealloc方法中,我必須調用“ bytes = nil;”。 或“ free(bytes);”,或者什么都沒有?
問題3 :對於我類中的@property(非原子,保留)變量,解除分配的最佳實踐是“ self.foo = nil;”。 或“ [foo releaase](我現在在做什么) ”。 此外,無論它們是什么,我都不想弄混KVO問題。
A1)對。 您的代碼段是正確的。
A2)如果您對它進行了malloc
調用,然后調用free
(畢竟它是C)。 無需執行foo = nil
從dealloc
返回時,您的對象將死亡,沒有人關心此指針值了。
A3) [foo release];
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.