iOS 開發 property,strong,weak,retain,assign,copy,nomatic 的區別及使用

來源:互聯網
上載者:User

標籤:並且   har   enc   reference   mic   nsarray   tin   簡單   支援   

1:ARC環境下,strong代替retain.weak代替assign,xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支援ARC的。xcode 4.3(ios5和以上版本)之後就有了ARC,並且開始使用  strong與weak2:weak的作用:在ARC環境下,所有指向這個對象的weak指標都將被置為nil。這個T特性很有用,相信很多開發人員都被指標指向已釋放的對象所造成的EXC_BAD_ACCESS困擾過,使用ARC以後,不論是strong還是weak類型的指標,都不會再指向一個已經銷毀的對象,從根本上解決了意外釋放導致的crash。3:assign的作用:簡單賦值,不改變引用計數,對基礎資料類型 (例如NSInteger,CGFloat)和C資料類型(int, float, double, char, 等) 適用單一資料型別 assign: 用於非指標變數。用於 
基礎資料類型 (例如NSInteger)和C資料類型(int, float, double, char, 等),另外還有id 
如: 
@property (nonatomic, assign) int number; 
@property (nonatomic, assign) id className;//id必須用assign 
反正記住:前面不需要加 “*” 的就用assign吧 

4:copy的作用:建立一個索引計數為1 的對象,然後釋放舊對象5:strong的作用:在ARC環境下,只要某一對象被一個strong指標指向,該對象就不會被銷毀。如果對象沒有被任何strong指標指向,那麼就會被銷毀。在預設情況下,所有的執行個體變數和局部變數都是strong類型的。可以說strong類型的指標在行為上跟非ARC下得retain是比較相似的
6:retain的作用:在非ARC時代,你需要自己retain一個想要保持的對象,ARC環境下就不需要了。現在唯一要做的就是用一個指標指向這個對象,只要指標沒有被重設為空白,對象就會一直在堆上。當指標指向新值的時候,原來的對象就會被release一次。這對執行個體變數,sunthesize的變數或者是局部變數都是實用的。


assign: 簡單賦值,不更改索引計數(Reference Counting)對基礎資料類copy: 建立一個索引計數為1的對象,然後釋放舊對象。對NSStringretain:釋放舊的對象,將舊對象的值賦予輸入對象,再提高輸入對象的索引計數為1 ,對其他NSObject和其子類
weak和strong的區別:
weak和strong不同的是 當一個對象不再有strong類型的指標指向它的時候 它會被釋放 ,即使還有weak型指標指向它。一旦最後一個strong型指標離去 ,這個對象將被釋放,所有剩餘的weak型指標都將被清除。
copy與retain的區別:
copy其實是建立了一個相同的對象,而retain不是;copy是內容拷貝,retain是指標拷貝;copy是內容的拷貝 ,對於像NSString,的確是這樣,如果拷貝的是NSArray這時只是copy了指向array中相對應元素的指標.這便是所謂的"淺複製"。
__block和__weak修飾符的區別
__block不管是ARC還是MRC模式下都可以使用,可以修飾對象,還可以修飾基礎資料型別 (Elementary Data Type)。__weak只能在ARC模式下使用,也只能修飾對象(NSString),不能修飾基礎資料型別 (Elementary Data Type)(int)。__block對象可以在block中被重新賦值,__weak不可以。

iOS 開發 property,strong,weak,retain,assign,copy,nomatic 的區別及使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.