代理、通知、KVO/KVC

代理

  • 代理設(shè)計(jì)模式的作用:

    • 1.A對(duì)象監(jiān)聽(tīng)B對(duì)象的一些行為,A成為B的代理
    • 2.B對(duì)象想告訴A對(duì)象一些事情,A成為B的代理
  • 代理設(shè)計(jì)模式的總結(jié):

    • 如果你想監(jiān)聽(tīng)別人的一些行為,那么你就要成為別人的代理
    • 如果你想告訴別人一些事情,那么就讓別人成為你的代理
  • 代理設(shè)計(jì)模式的開(kāi)發(fā)步驟

    • 1.擬一份協(xié)議(協(xié)議名字的格式:控件名 + Delegate),在協(xié)議里面聲明一些代理方法(一般代理方法都是@optional)
    • 2.聲明一個(gè)代理屬性:@property (nonatomic, weak) id<代理協(xié)議> delegate;
    • 3.在內(nèi)部發(fā)生某些行為時(shí),調(diào)用代理對(duì)應(yīng)的代理方法,通知代理內(nèi)部發(fā)生什么事
    • 4.設(shè)置代理:xxx.delegate = yyy;
    • 5.yyy對(duì)象遵守協(xié)議,實(shí)現(xiàn)代理方法

代理和通知的區(qū)別

  • 代理:1個(gè)對(duì)象只能告訴另1個(gè)對(duì)象發(fā)生了什么事
  • 通知:1個(gè)對(duì)象可以告訴N個(gè)對(duì)象發(fā)生了什么事

KVC\KVO

  • KVC(Key Value Coding)常見(jiàn)作用:給模型屬性賦值
  • KVO(Key Value Observing)常用作用:監(jiān)聽(tīng)模型屬性值的改變
  • KVO的使用步驟
// cc監(jiān)聽(tīng)了aa的name屬性的改變
[aa addObserver:cc forKeyPath:@"name" options: NSKeyValueObservingOptionOld context:nil];

// cc得實(shí)現(xiàn)監(jiān)聽(tīng)方法
/**
 * 當(dāng)監(jiān)聽(tīng)到object的keyPath屬性發(fā)生了改變
 */
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSLog(@"監(jiān)聽(tīng)到%@對(duì)象的%@屬性發(fā)生了改變, %@", object, keyPath, change);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,210評(píng)論 30 471
  • 代理 代理設(shè)計(jì)模式的作用:1.A對(duì)象監(jiān)聽(tīng)B對(duì)象的一些行為,A成為B的代理2.B對(duì)象想告訴A對(duì)象一些事情,A成為B的...
    Sean_Jiang閱讀 1,513評(píng)論 1 8
  • KVC:Key Value Coding 解釋意思:通過(guò)一個(gè)key去找到對(duì)應(yīng)的編碼初學(xué)者很同意搞混與KVO的區(qū)別,...
    元宇宙協(xié)會(huì)閱讀 763評(píng)論 0 2
  • 代理 代理設(shè)計(jì)模式的作用:1.A對(duì)象監(jiān)聽(tīng)B對(duì)象的一些行為,A成為B的代理2.B對(duì)象想告訴A對(duì)象一些事情,A成為B的...
    我是大龍啊閱讀 542評(píng)論 2 51
  • 上半年有段時(shí)間做了一個(gè)項(xiàng)目,項(xiàng)目中聊天界面用到了音頻播放,涉及到進(jìn)度條,當(dāng)時(shí)做android時(shí)候處理的不太好,由于...
    DaZenD閱讀 3,044評(píng)論 0 26