簡體   English   中英

NsMutable數組保留計數

[英]NsMutable array retain count

我使用這些儀器在我的iPhone應用程序中查找泄漏,並且發現我的代碼此行中存在泄漏

tableViewController.dataSource = [[NSMutableArray alloc] initWithArray:[subjects_dic allKeys]];

屬性dataSource定義為保留。 這是一個錯誤嗎?

分開來:

NSMutableArray *mutArray = [[NSMutableArray alloc] initWithArray:[subjects_dic allKeys]];
[tableViewController setDataSource:mutArray];
[mutArray release];

這與從導航控制器創建,推送和釋放視圖所使用的模式相同。

如果在屬性聲明中指定了保留,那么分配給該屬性的所有內容都會保留。

因此,在您的示例中,您有兩個選擇:

  1. 無需使用alloc / init方法創建新數組,只需使用[NSMutableArray arrayWithArray:[subjects_dic allKeys]];

  2. 設置后釋放該屬性一次。 此選項不是一個好主意,因為如果將來更改該屬性的內存管理並且忘記了此版本,則可能會導致崩潰。

我建議選擇1。

另一種選擇:

// mutableCopy implicitly retains the array returned by allKeys
NSMutableArray *mutArray = [[subjects_dic allKeys] mutableCopy];
[tableViewController setDataSource:mutArray]; // @property dataSource retains mutArray
[mutArray release];

暫無
暫無

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

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