簡體   English   中英

對象IOS內存管理

[英]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 = nildealloc返回時,您的對象將死亡,沒有人關心此指針值了。

A3) [foo release];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM