沒有ARC我寫的一套方法,這樣iOS中的SET方法時啓用ARC
- (void)setArr:(NSMutableArray *)arr
{
_arr = [arr retain];
}
但Xcode中告訴我,「‘保留’是不可用:自動引用計數模式不可用」時啓用ARC 。
沒有ARC我寫的一套方法,這樣iOS中的SET方法時啓用ARC
- (void)setArr:(NSMutableArray *)arr
{
_arr = [arr retain];
}
但Xcode中告訴我,「‘保留’是不可用:自動引用計數模式不可用」時啓用ARC 。
當使用弧線,所有你需要做的就是讓系統在保留/釋放,這意味着:
- (void)setArr:(NSMutableArray *)arr
{
_arr = arr;
}
但是,如果你的二傳手是這樣簡單的只是更容易讓編譯器合成它。
此前,您必須使用@synthesize,但現在將其聲明爲標題上的屬性就足夠了。
@property (strong, nonatomic) NSMutableArray *arr;
_arr = arr;
就是這一切必要的。但實際上,根據您的代碼示例,不需要自己編寫setter。只需在頭文件中聲明@property NSMutableArray *arr;
就足以讓編譯器生成setter和getter。當編譯ARC啓用時,保留和釋放調用由編譯器爲您生成。
只要'_arr = arr;'。爲什麼你甚至實現了這樣的二傳手?讓它合成。 – rmaddy
這不是一個很好的二傳手。如果您先設置一個值,然後再設置一個值,則預ARC會導致泄漏。 –
如果你用這種方法讓你的setter沒有ARC,你可能會有一個相當大的內存泄漏。 – yinkou