當前位置:成語大全網 - 書法字典 - Iossassign、弱、強等屬性和引用計數。

Iossassign、弱、強等屬性和引用計數。

1、賦值

Assign主要用於修飾基本數據類型,如int、float、NSInteger、CGFloat等。存放在堆棧中的內存不需要管理,壹般不修飾對象,否則會釋放對象的內存地址,但不會釋放指針,這樣會造成野指針。

2、軟弱

弱只能用來修飾對象,但它並不持有對象,引用計數也不會是+1。該屬性在運行時運行。在被指向的內存被釋放後(引用計數為0),指針會自動=nil,這主要是為了避免循環引用。弱原理

3、強勢,挽留

Strong用來修飾壹個對象並持有它,引用計數會是+1。正常情況下,所指向的對象不會被銷毀,可以通過手動將其設置為空指針來減少引用計數。如果引用計數為0,對象將被銷毀。強弧下相當於MRC下的retain(retain對於弧的效果和強的壹樣)。

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.復制後,學生引用計數+1 = 4 //不實現copyWithZone方法,否則引用計數保持3不變,但cyStu指向的對象不是學生。