【轉載XMG】代理

代理

  • 代理設計模式的作用:

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

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

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

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

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

KVC\KVO

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

// cc得實現(xiàn)監(jiān)聽方法
/**
 * 當監(jiān)聽到object的keyPath屬性發(fā)生了改變
 */
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSLog(@"監(jiān)聽到%@對象的%@屬性發(fā)生了改變, %@", object, keyPath, change);
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,619評論 30 472
  • 文/Jack_lin(簡書作者)原文鏈接:http://www.itdecent.cn/p/5d2163640e2...
    筆筆請求閱讀 632評論 0 0
  • 設計模式 1.delegate和notification什么區(qū)別,什么情況使用? 2.描述一下KVO和KVC。 K...
    丶逐漸閱讀 2,030評論 3 2
  • 1.Difference between shallow copy and deep copy? 淺復制和深復制的...
    用心在飛閱讀 1,070評論 0 9
  • 今天突然腦洞大開,記起了前一段時間更改過的人人網(wǎng)密碼,于是登錄進入,最近來訪人依然是時隔久遠,最近的來訪者依然不認...
    克羅地亞狂舞曲閱讀 202評論 0 0

友情鏈接更多精彩內容