在既有類中使用關聯(lián)對象存放自定義數(shù)據(jù)

為什么需要關聯(lián)對象

有時需要在對象中存放相關信息惊科。通常的做法:從這個對象的類中繼承一個子類康栈,來存放我們的信息。但是算灸,有時候?qū)ο蟛皇侵苯油ㄟ^類來創(chuàng)建的,這種時候我們就沒法來通過繼承一個子類保存我們需要的信息驻啤。

所以菲驴,為了解決這個問題。就有了 『關聯(lián)對象』


關聯(lián)對象的策略

關聯(lián)類型 等效的@property 屬性
OBJC_ASSOCIATION_ASSIGN assign
OBJC_ASSOCIATION_RETAIN_NONATIONMIC nonationmic,retain
OBJC_ASSOCIATION_COPY_NONATIONMIC nonationmic,copy
OBJC_ASSOCIATION_RETAIN retain
OBJC_ASSOCIATION_COPY copy

管理關聯(lián)對象的方法

  • void objc_setAssociatedObject(id object,void *key,id value ,objc_AssociationPolicy policy) 給定鍵和策略給某個對象設置關聯(lián)對象
  • id objc_getAssociatedOjbect(id object,void *key)根據(jù)鍵從某個對象中取出對應的關聯(lián)對象
  • void objc_removeAssociatedObjects(id object)移除某個對象的所有關聯(lián)對象

理解關聯(lián)對象

我們可以把某對象想象成 NSDictonary .關聯(lián)到該對象的值理解為字典中的條目

存取對象的值就相當于字典對象上調(diào)用[object setObject:value forKey:key][object objectForKey:key]

兩者之間有個重要的差別: 設置關聯(lián)對象是用的鍵(key) 是個不透明的指針(其所指向的數(shù)據(jù)結(jié)構不局限于某種特定類型的指針)

在設置關聯(lián)對象時骑冗,若想令兩個鍵匹配到同一個值赊瞬,則兩者必須是相同的指針才行先煎。所以在設置關聯(lián)對象值是,通常使用靜態(tài)全局變量做鍵(static void *EOCMyAlertViewKey = "EOCMyAlertViewKey";)

注意

  • 只有在其他做法不可行時才應選用關聯(lián)對象巧涧,因為這種做法通常會引入難以查找的 BUG
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榨婆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子褒侧,更是在濱河造成了極大的恐慌,老刑警劉巖谊迄,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闷供,死亡現(xiàn)場離奇詭異,居然都是意外死亡统诺,警方通過查閱死者的電腦和手機歪脏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粮呢,“玉大人婿失,你說我怎么就攤上這事∽墓眩” “怎么了豪硅?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挺物。 經(jīng)常有香客問我懒浮,道長,這世上最難降的妖魔是什么识藤? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任砚著,我火速辦了婚禮,結(jié)果婚禮上痴昧,老公的妹妹穿的比我還像新娘稽穆。我一直安慰自己,他們只是感情好赶撰,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布舌镶。 她就那樣靜靜地躺著,像睡著了一般扣囊。 火紅的嫁衣襯著肌膚如雪乎折。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天侵歇,我揣著相機與錄音骂澄,去河邊找鬼。 笑死惕虑,一個胖子當著我的面吹牛坟冲,可吹牛的內(nèi)容都是我干的磨镶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼健提,長吁一口氣:“原來是場噩夢啊……” “哼琳猫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起私痹,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤脐嫂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后紊遵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體账千,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年暗膜,在試婚紗的時候發(fā)現(xiàn)自己被綠了匀奏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡学搜,死狀恐怖娃善,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瑞佩,我是刑警寧澤聚磺,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站钉凌,受9級特大地震影響咧最,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜御雕,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一矢沿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酸纲,春花似錦捣鲸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疾嗅,卻和暖如春外厂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背代承。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工汁蝶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓掖棉,卻偏偏與公主長得像墓律,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子幔亥,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容