我是iOS5開發的新手,并使用Objective-C。我很難理解強存儲和弱存儲之間的區別。我已經閱讀了文檔和其他SO問題,但是它們聽起來與我完全相同,沒有進一步的了解。我閱讀了文檔:過渡到ARC-引用了iOS4的保留,分配和發布條款;這讓我感到困惑。然后,我看一下Open U CS193p,它區分強項和弱項:強:“將其保留在堆中,直到我不再指向它為止” 弱:“只要其他人強烈將其保留,則保留此”這兩個定義是否相同=如果指針不再指向對象,則釋放保存該對象的內存?我了解指針,內存堆,分配或釋放的概念-但是強和弱之間有什么區別?
3 回答

萬千封印
TA貢獻1891條經驗 獲得超3個贊
區別在于,一旦沒有強大的指針指向該對象,該對象將被釋放。即使弱指針指向它,一旦最后一個強指針消失,該對象也將被釋放,并且所有剩余的弱指針將被清零。
也許有個例子。
想象我們的對象是一只狗,那只狗想逃跑(被釋放)。
強壯的指針就像拴在狗身上的皮帶。只要您將皮帶拴在狗上,狗就不會跑開。如果有五個人將皮帶拴在一只狗上(五個強力指針指向一個物體),則只有將所有五個皮帶分開后,狗才會逃跑。
另一方面,弱指針就像小孩指著狗說:“看!狗!” 只要那只狗仍系在皮帶上,小孩子仍然可以看見它,他們仍會指向它。但是,一旦所有的皮帶都松開了,無論有多少小孩指向它,狗都會跑開。
一旦最后一個強指針(皮帶)不再指向對象,該對象將被釋放,所有弱指針將被清零。

一只萌萌小番薯
TA貢獻1795條經驗 獲得超7個贊
另一個例子:學生是Object
,假設她/他deallocate
只要完成所有核心課程(strong pointers
)就可以畢業(),無論她/他是否修讀可選課程(weak pointers
)。換句話說:強指針是該指針釋放的唯一因素Object
。
- 3 回答
- 0 關注
- 420 瀏覽
添加回答
舉報
0/150
提交
取消