91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Object-C關聯

發布時間:2020-07-13 19:14:05 來源:網絡 閱讀:261 作者:卓行天下 欄目:開發技術

Object-C關聯

 關聯是指把兩個對象相互關聯起來,使得其中的一個對象作為另外一個對象的一部分。
    關聯特性只有在Mac OS X V10.6以及以后的版本上才是可用的。

在類的定義之外為類增加額外的存儲空間

    使用關聯,我們可以不用修改類的定義而為其對象增加存儲空間。這在我們無法訪問到類的源碼的時候或者是考慮到二進制兼容性的時候是非常有用。
    關聯是基于關鍵字的,因此,我們可以為任何對象增加任意多的關聯,每個都使用不同的關鍵字即可。關聯是可以保證被關聯的對象在關聯對象的整個生命周期都是可用的(在垃圾自動回收環境下也不會導致資源不可回收)。

創建關聯

    創建關聯要使用到Objective-C的運行時函數:objc_setAssociatedObject來把一個對象與另外一個對象進行關聯。該函數需要四個參數:源對象,關鍵字,關聯的對象和一個關聯策略。當然,此處的關鍵字和關聯策略是需要進一步討論的。
  ■  關鍵字是一個void類型的指針。每一個關聯的關鍵字必須是唯一的。通常都是會采用靜態變量來作為關鍵字。
  ■  關聯策略表明了相關的對象是通過賦值,保留引用還是復制的方式進行關聯的;還有這種關聯是原子的還是非原子的。這里的關聯策略和聲明屬性時的很類似。這種關聯策略是通過使用預先定義好的常量來表示的。

@interface NSObject (CategoryWithProperty)
@property (nonatomic, strong) NSObject 
*property;
 
@end

@implementation
 NSObject (CategoryWithProperty)
 
- (NSObject *)property { 
return objc_getAssociatedObject(self, @selector(property));
}

 
- (void)setProperty:(NSObject *)value 
{  
objc_setAssociatedObject(self, @selector(property), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

@end



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定结县| 固安县| 托克托县| 四子王旗| 塘沽区| 崇文区| 太保市| 麻阳| 长汀县| 页游| 石狮市| 湟源县| 宁化县| 五指山市| 江山市| 金门县| 类乌齐县| 大港区| 汨罗市| 武鸣县| 永川市| 迭部县| 天气| 五家渠市| 拜城县| 上思县| 郴州市| 云梦县| 铁岭市| 忻州市| 中卫市| 平江县| 改则县| 上栗县| 西乌| 安图县| 海原县| 新蔡县| 巍山| 土默特左旗| 宁南县|