MRC中使用 assgin 修飾代理,ARC中推薦使用weak 修飾代理
assign是指針賦值,不對引用計數進行操作,如果使用完畢以後,不把其置爲nil,就有可能產生野指針,這時候如果操作就會crash(很容易產生野指針錯誤: EXC_BAD_ACCESS);
而weak修飾的對象銷燬了就會將指針置爲nil,所以ARC中代理對象使用weak修飾更安全。
如果ARC中使用了assign修飾了代理對象,建議在 delloc 方法裏將代理對象置爲 nil,防止野指針的出現
-
(void)dealloc
{
self.delegate = nil;
}1
2
3
4
assgin 和 weak的常用用途
assign 一般用在基本數據類型上面, 比如int\double等,MRC中還用來修飾代理對象
weak 一般用來修飾代理對象, 或者用來解決循環引用的問題