簡體   English   中英

iPhone memory 管理

[英]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.

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