在分類(Category)中添加屬性

在ios開發(fā)中,分類的概念我們都很熟悉,通常我們會(huì)利用分類來給一個(gè)類添加一些額外的方法,添加方法的操作和平時(shí)在類中添加方法的操作一致,這里就不再贅述。下面我們來說說怎樣在分類中添加屬性:

添加屬性可以再分類的.h文件中來添加,也可以再.m文件中的匿名分類中添加,我們像添加普通屬性一樣添加分類屬性,這是編譯器不會(huì)報(bào)任何的異常,但是當(dāng)使用到這些分類屬性的時(shí)候會(huì)導(dǎo)致程序崩潰,為了解決這個(gè)問題,我們需要用到runtime運(yùn)行時(shí)。

舉個(gè)栗子:
添加的分類屬性如下:

@property (nonatomic, copy) NSString *title;

添加運(yùn)行時(shí)頭文件

#import <objc/runtime.h>

然后重寫屬性的set和get方法

// 定義屬性的Key
static NSString *titleKey = @"titleKey";

- (void)setTitle:(NSString *)title
{
    objc_setAssociatedObject(self, &titleKey, title, OBJC_ASSOCIATION_COPY);
}

- (NSString *)title
{
    return objc_getAssociatedObject(self, &titleKey);
}

objc_setAssociatedObject方法中,有四個(gè)參數(shù),分別是:源對(duì)象,關(guān)聯(lián)時(shí)的用來標(biāo)記是哪一個(gè)屬性的key(因?yàn)槟憧赡芤砑雍芏鄬傩裕?,關(guān)聯(lián)的對(duì)象和一個(gè)關(guān)聯(lián)策略。

重寫完set和get方法后,就可以正常使用了。

參考文章:【憶江南的博客】【給分類(Category)添加屬性】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,661評(píng)論 19 139
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,457評(píng)論 6 13
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,077評(píng)論 0 9
  • 在iOS中,分類應(yīng)該是oc比較鮮明的語(yǔ)法特性,用起來確實(shí)非常方便,能夠提高開發(fā)效率。想必,大家一開始接觸Categ...
    subject_2619閱讀 401評(píng)論 0 0
  • 竊國(guó) 一 南海 雖然還是三月初,宋朝最南端的州府正是涼風(fēng)陰雨,冷熱不定的時(shí)節(jié),但南海上東雍城外的午后已是驕陽(yáng)似火,...
    賈郝仁aguda閱讀 1,574評(píng)論 3 5

友情鏈接更多精彩內(nèi)容