1. 程式人生 > >iOS開發之weak和assign的區別

iOS開發之weak和assign的區別

共同點:
都可以修飾物件型別的property, 不會增加其引用計數.

不同點:
1.出現時期, assign出現在ARC之前, weak出現在ARC之後;
2.可修飾的型別, assign既可以修飾物件, 又可以修飾基本型別, 而weak只能修飾物件;
3.安全性, assign修飾的物件在被銷燬之後, 其指標依然存在, 容易導致野指標錯誤, 而weak修飾的物件銷燬之後指標自動設定為nil, 不會發生危險.

總結:
在ARC時代, 應該用weak來表示弱引用, 比如代理物件, 而用assign來修飾基本資料型別, 比如int, float, double. 最後建議, 為了相容64位CPU, 儘量避免使用C資料型別, 而應該使用Objective-C新增的資料型別, 如NSInteger, NSUInteger, CGFloat等等.