欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入解析Swift代理模式

 更新時間:2017年03月07日 09:28:21   作者:BY  
委托(代理)是一種設(shè)計(jì)模式,它允許類或結(jié)構(gòu)體將一些需要它們負(fù)責(zé)的功能交由(委托)給其他的類型。下面這篇文章主要介紹了Swift代理模式的相關(guān)資料,文章開始先介紹了Objective-C相關(guān)的內(nèi)容,需要的朋友可以參考借鑒,下面來一起看看吧。

配置如下:

      Xcode 8.2

      Swift 3.0

在iOS開發(fā)中,無論是 Objective-C 還是 Swift ,Delegate 有著具足輕重的位置,如TabelViewDelegate 與 TableViewDataSource。

Swift 中的代理模式 和 Objective-C 除了語法外,幾乎一樣。

Objective-C 代理模式

在介紹 Swift 代理模式前,先來看回顧一下 Objective-C 中的代理模式如何實(shí)現(xiàn)

Objective-C 中用代理實(shí)現(xiàn)反向傳值:

委托方(子控制器)

委托方需要實(shí)現(xiàn)

創(chuàng)建協(xié)議 、聲明協(xié)議方法

 @protocol SubViewDelegate <NSObject>
 
 - (void)backWithStr:(NSString *) str;

 @end

創(chuàng)建一個代理屬性

 // weak聲明
 @property (nonatomic, weak) id<SubViewDelegate> delegate;

執(zhí)行協(xié)議方法

 // 判斷代理是實(shí)現(xiàn)該方法,避免carsh
 if ([self.delegate respondsToSelector:@selector(backWithStr:)]) {
 [self.delegate backWithStr:self.textField.text];
 }

代理方(主控制器)

代理方需要實(shí)現(xiàn)

遵守(繼承)協(xié)議

 @interface ViewController () <SubViewDelegate>

將代理設(shè)為自己

 subVC.delegate = self;

實(shí)現(xiàn)代理方法

 - (void)backWithStr:(NSString *)str {
 self.label.text = str;
 }

Swift 代理模式

Swift 代理模式 與 Objective-C 一樣,只是語法不同。

Swift 中用代理實(shí)現(xiàn)反向傳值:

委托方(子控制器)

創(chuàng)建協(xié)議 、聲明協(xié)議方法

 protocol SubViewDelegate {
 func backStr(str: String)
 } 

創(chuàng)建一個代理屬性

 var delegate: SubViewDelegate?

執(zhí)行協(xié)議方法

 /// 執(zhí)行代理方法,將值回傳
 delegate?.backStr(str: textField.text ?? "")

代理方(主控制器)

繼承協(xié)議

 class ViewController: UIViewController, SubViewDelegate

將代理設(shè)為自己

 subVC.delegate = self

實(shí)現(xiàn)代理方法

 func backStr(str: String) {
  self.textF.text = str
 }

總結(jié)

對比可以方法 Swift 代理模式 與 Objective-C 用法完全相同,只是語法發(fā)生了變化。

值得一提的是Swift 的擴(kuò)展 extension可以用來繼承協(xié)議,實(shí)現(xiàn)代碼隔離,便于維護(hù)。

/// 使用擴(kuò)展繼承協(xié)議 實(shí)現(xiàn)協(xié)議方法 可以分離代碼
extension ViewController: SubViewDelegate{
 /// 實(shí)現(xiàn)代理方法
 func backStr(str: String) {
  self.textF.text = str
 }
}

最后附上Demo源碼

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Swift 4.2使用self做為變量名淺析

    Swift 4.2使用self做為變量名淺析

    這篇文章主要給大家介紹了關(guān)于Swift 4.2使用self做為變量名的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 使用swift實(shí)現(xiàn)計(jì)算器功能

    使用swift實(shí)現(xiàn)計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了使用swift實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Swift實(shí)現(xiàn)“或”操作符的3種方法示例

    Swift實(shí)現(xiàn)“或”操作符的3種方法示例

    這篇文章主要給大家介紹了關(guān)于Swift實(shí)現(xiàn)“或”操作符的3種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • swift中可選值?和!使用的方法示例

    swift中可選值?和!使用的方法示例

    這篇文章主要給大家介紹了關(guān)于swift中可選值?和!使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Swift 編程語言入門教程

    Swift 編程語言入門教程

    今天在網(wǎng)上看到一篇非常好的Swift 編程語言入門教程,分享給大家
    2014-08-08
  • Swift?Sequence?Collection使用示例學(xué)習(xí)

    Swift?Sequence?Collection使用示例學(xué)習(xí)

    這篇文章主要為大家介紹了Swift?Sequence?Collection使用示例學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • swift語言Codable?用法及原理詳解

    swift語言Codable?用法及原理詳解

    這篇文章主要為大家介紹了swift語言Codable?用法及原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Swift中的訪問控制和protected

    Swift中的訪問控制和protected

    這篇文章主要介紹了Swift中的訪問控制和protected,本文主要講解為什么Swift沒有類似protected的選項(xiàng),需要的朋友可以參考下
    2015-05-05
  • 深入探究Swift枚舉關(guān)聯(lián)值的內(nèi)存

    深入探究Swift枚舉關(guān)聯(lián)值的內(nèi)存

    這篇文章主要給大家介紹了關(guān)于Swift枚舉關(guān)聯(lián)值的內(nèi)存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Swift具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)

    Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)

    這篇文章主要給大家分享了關(guān)于Swift 4中一些實(shí)用的數(shù)組技巧,文中通過示例代碼介紹的介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用swift具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03

最新評論