strong weak


strong與weak是由ARC新引入的對象變量屬性

ARC引入了新的對象的新生命周期限定,即零弱引用。如果零弱引用指向的對象被deallocated的話,零弱引用的對象會被自動設置為nil。

 

@property(strong) MyClass *myObject;

相當於@property(retain) MyClass *myObject;

 

@property(weak) MyOtherClass *delegate;

相當於@property(assign) MyOtherClass *delegate;

 

強引用與弱引用的廣義區別:
  強引用也就是我們通常所講的引用,其存亡直接決定了所指對象的存亡。如果不存在指向一個對象的引用,並且此對象不再顯示列表中,則此對象會被從內存中釋放。
  弱引用除了不決定對象的存亡外,其他與強引用相同。即使一個對象被持有無數個若引用,只要沒有強引用指向他,那麽其還是會被清除。沒辦法,還是 “強哥” 有面子。

 

簡單講strong等同retain
weak比assign多了一個功能,當對象消失后自動把指針變成nil,好處不言而喻。

 

__weak, __strong 用來修飾變量,此外還有 __unsafe_unretained, __autoreleasing 都是用來修飾變量的。
__strong 是缺省的關鍵詞。
__weak 聲明了一個可以自動 nil 化的弱引用。
__unsafe_unretained 聲明一個弱應用,但是不會自動nil化,也就是說,如果所指向的內存區域被釋放了,這個指針就是一個野指針了。
__autoreleasing 用來修飾一個函數的參數,這個參數會在函數返回的時候被自動釋放。

 

http://blog.csdn.net/favormm/article/details/7023322


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM