2015-09-06 67 views
1

我已經閱讀從GitHub的項目。該項目使用了延遲加載一些源代碼,並覆蓋吸氣,以確保節能resources.And釋放它在dealloc..The這樣的代碼:當我重寫getter時,我應該釋放dealloc中的對象嗎?

-(XHMessageTableView *)messageTableView { 
if (!_messageTableView) { 
    _messageTableView = [[XHMessageTableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; 
    _messageTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    _messageTableView.dataSource = self; 
    _messageTableView.delegate = self; 
    _messageTableView.separatorColor = [UIColor clearColor]; 
    _messageTableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
} 
return _messageTableView; 

}

在初始化

[self.view addSubviews:self.messageTableView]; 

中的dealloc:

-(void)dealloc { 
_messageTableView = nil;} 
ARC中的

,如果覆蓋它,是否需要設置屬性nil?

回答

0

只要沒有保留循環被創建,設置變量爲nil不應該是必要的。

但是爲了讓作者可能覺得有必要發佈的tableView有個更好的想法,我不得不仔細看看代碼。也許他們覺得tableViewdelegatedataSource被強烈保留,UITableView的情況並非如此,但可能是實現它們的類的情況,或者可能在代碼的其他地方創建了保留循環。

+0

真棒答案...我同意你的想法。作者可能會認爲某些東西是強有力的。但一個好的設計是找出問題出在哪裏,然後修正而不是手動設置它。 – seguedestination

相關問題