個人讀簡書——簡單知識總結(協議代理)

1.協議和代理的區別

<1>協議不是對象,是OC的一種語法,用于聲明一組方法,約定調用者可以使用實現者的那些方法

協議不能被單獨實例化,只能由類來明文聲明,并具體實現。

協議的使用:

(1)指定對象需要實現的方法(必須的和非必須的)

(2)調用時,先判斷被調用者是否實現了某個方法

? ? ?if([self.delegate respondsToSelector:@selector(textColorChanged:)])

?{? [self.delegatetextColorChanged:self.textColor];?

}

<2>代理:是A對象指定B對象處理某些特定任務的設計模式,這里的B對象就成為A對象的代理

在OC中協議是實現代理模式的一種方式

協議提供了面向接口編程的一種方式,使用協議,調用者只需要關心被調用者是否能做某些事,而不關心被調用者具體是誰。

這就是為什么代理對象總是被聲明成id,也就是說,只要實現了協議,任何類都可以成為代理。

<3>小結

協議是Objective-C 的一種語法,聲明了一套方法,而代理是一種設計模式,可以用協議來實現。

使用協議要注意三個問題:

指定對象需要實現的方法。

調用時,先判斷被調用者是否實現某方法。

聲明為代理的屬性,需要定義為 weak。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉至元數據結尾創建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,757評論 0 9
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,200評論 30 471
  • 1. 使用 #import 相對c的 include 是防止頭文件的重復導入 2. NSLog 相對于 print...
    迎風起飛的豬閱讀 1,764評論 6 9
  • 一、深復制和淺復制的區別? 1、淺復制:只是復制了指向對象的指針,即兩個指針指向同一塊內存單元!而不復制指向對象的...
    iOS_Alex閱讀 1,411評論 1 27
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,861評論 1 10