[英]iPhone memory management
我不完全明白這一點。
如果我寫:
NSNumber *number = [NSNumber initWithInteger: 5];
我必須釋放它嗎?
這是否與: NSNumber *number= [NSNumber alloc]; 相同
?
你不會調用NSNumber *number = [NSNumber initWithInteger: 5];
因為NSNumber
不響應+ initWithInteger:
。 您實際上需要同時調用+alloc
和-initWithInteger:
,如下所示:
NSNumber *number = [[NSNumber alloc] initWithInteger:5];
然后您將不得不稍后發布它; 對於您進行的每個 alloc 調用,您還應該調用 release。
或者,您可以使用以下 class 方法獲取自動發布的NSNumber
:
NSNumber *number = [NSNumber numberWithInteger:5];
像這樣的方法返回一個自動釋放的 object,這意味着您以后不需要自己釋放它。
“一般的經驗法則是:如果您分配、復制或新建,memory 管理由您負責。”
我也會為此添加保留。
首先, NSNumber class 中沒有名為“ +(id)initWithInteger: ”的 class 方法。 那應該是“ +(id)numberWithInteger: ”
你不應該釋放它。 像“ [NSNumber numberWith... ”這樣的構造函數被稱為便捷構造函數。 它們返回自動釋放的對象。 因此,您不必擔心釋放它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.