我的下面的代碼是否包含內存泄漏? 請幫我看看這裏!將分配的對象分配給某些未分配的對象會導致內存泄漏?
NSMutableArray *arrInfo = [[NSMutableArray alloc] init];
appDelegate.arrAppInfo = arrInfo;
[arrInfo release];
我的下面的代碼是否包含內存泄漏? 請幫我看看這裏!將分配的對象分配給某些未分配的對象會導致內存泄漏?
NSMutableArray *arrInfo = [[NSMutableArray alloc] init];
appDelegate.arrAppInfo = arrInfo;
[arrInfo release];
你做了什麼,如果該屬性arrAppInfo被聲明爲保留(或強)財產在非ARC環境非常有效。實際上,ARC在類似情況下所做的只是在檢測到當前範圍中不再使用arrInfo屬性時才發佈版本。
深入下去:
NSMutableArray *arrInfo = [[NSMutableArray alloc] init]; //arrInfo retain count = 1
appDelegate.arrAppInfo = arrInfo; //arrInfo retain count = 2
[arrInfo release]; //arrInfo retain count = 1
如果你不將其分配給你會重新分配或釋放arrAppInfo屬性時引起了未來內存泄漏一個留置財產後釋放arrInfo變量,因爲其保留數不會爲0.
我已經聲明如下@property(nonatomic,retain)NSMutableArray * arrAppInfo;在appDelegate類 – JKMania
因此,你發佈的代碼是有效的和內存泄漏免費的,你應該接受這是一個有效的答案 –
這取決於如何在appDelegate中定義arrAppInfo。
如果它是一個強有力的參考,只要appDelegate在某個時刻發佈arrAppInfo,就會很好。
@property (nonatomic, retain) NSMutableArray *arrAppInfo; //All good
如果它的弱引用,那麼當你嘗試,因爲它被釋放訪問arrAppInfo你會得到一個錯誤。
@property (nonatomic, assign) NSMutableArray *arrAppInfo; //Trouble
爲什麼你認爲它包含內存泄漏? – KudoCC