你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> strong與weak

strong與weak

編輯:關於IOS
如果把一個屬性聲明為weak 編譯器做了一件事,只是給成員變量賦值,而沒有對引用計數進行處理 set方法: -(void)setName:(NSString *)name {   if (_name != name)   {          _name = name;        } } 如果把一個屬性聲明為strong 實際上編譯器做了兩件事,1、處理了引用計數 2、對成員變量賦值 set方法: -(void)setName:(NSString *)name {   if (_name != name)   {           //將舊的對象引用計數器減一    [_name release];           //將新的對象引用計數加一    [name retain];           //賦值給成員變量          _name = name;        } } 以下內容為轉載,出處不詳。 assign:指定setter方法用簡單的賦值,這是默認操作。你可以對標量類型(如int)使用這個屬性。你可以想象一個float,它不是一個對象,所以它不能retain、copy。 retain:指定retain應該在後面的對象上調用,前一個值發送一條release消息。你可以想象一個NSString實例,它是一個對象,而且你可能想要retain它。 copy:指定應該使用對象的副本(深度復制),前一個值發送一條release消息。基本上像retain,但是沒有增加引用計數,是分配一塊新的內存來放置它。 readonly:將只生成getter方法而不生成setter方法(getter方法沒有get前綴)。 readwrite:默認屬性,將生成不帶額外參數的getter和setter方法(setter方法只有一個參數)。 atomic:對於對象的默認屬性,就是setter/getter生成的方法是一個原子操作。如果有多個線程同時調用setter的話,不會出現某一個線程執行setter全部語句之前,另一個線程開始執行setter的情況,相關於方法頭尾加了鎖一樣。 nonatomic:不保證setter/getter的原子性,多線程情況下數據可能會有問題。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved