[英]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];
這與從導航控制器創建,推送和釋放視圖所使用的模式相同。
如果在屬性聲明中指定了保留,那么分配給該屬性的所有內容都會保留。
因此,在您的示例中,您有兩個選擇:
無需使用alloc / init方法創建新數組,只需使用[NSMutableArray arrayWithArray:[subjects_dic allKeys]];
設置后釋放該屬性一次。 此選項不是一個好主意,因為如果將來更改該屬性的內存管理並且忘記了此版本,則可能會導致崩潰。
我建議選擇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.