Assign主要用於修飾基本數據類型,如int、float、NSInteger和CGFloat。存儲在堆棧中的內存不需要管理,壹般不裝飾對象,否則對象的內存地址會被釋放,但指針不會被釋放,這將導致野生指針。
2、弱
Weak只能用於修飾對象,但它並不保存對象,引用計數不會是+1。此屬性在運行時運行。在被指向的內存被釋放後(引用計數為0),指針將自動=nil,這主要用於避免循環引用。弱原則
3、堅強,保留
Strong用於修飾對象並保持它,引用計數將為+1。在正常情況下,指向的對象不會被銷毀,通過手動將其設置為空指針可以減少引用計數。如果引用計數為0,對象將被銷毀。強弧下相當於保留在MRC下(保留對弧的效果與強弧相同)。
4、復制
與strong類似,如果對象不支持NSCopying協議來執行copyWithZone方法,則效果與strong基本相同,對象引用計數將為+1,並且不會復制任何新對象。相反,copy是指引用計數為1的復制的新對象,它主要用於修飾可變類型的不可變對象,如NSString、NSDictionary和NSArray。副本的深層和淺層副本的詳細說明
5、不安全_未保留
Unsafe_retain類似於weak,但如果釋放內存,指針仍然保持以前的地址並成為壹個野指針,訪問將崩潰,因此它是不安全的。
摘要
1,弱後的學生引用計數= 1
2.在strong學生參考計數+1 = 2之後。
3.保留後的學生參考人數+1 = 3。
4.復制後,student引用計數+1 = 4 //不實現copyWithZone方法,否則引用計數將保持3不變,但cyStu指向的對象不是student。