最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS如何定義名為任意的變量詳解

 更新時(shí)間:2018年05月15日 09:04:46   作者:uxyheaven  
這篇文章主要給大家介紹了關(guān)于iOS如何定義名為任意的變量的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

本文主要介紹了關(guān)于iOS定義名為任意的變量的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。

需求說明

在實(shí)際的編程過程中,我們總要定制一些控件,在定制的過程里,有時(shí)喜歡自己實(shí)現(xiàn)部分delegate方法

// MYScrollView.m

- (instancetype)init
{
 ...
 self.delegae = self;
 ...
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
 NSLog(@"%s 我被執(zhí)行", __func__);
 ...
}

粗看上述的代碼沒什么問題, 可是當(dāng)我們的其他對象也想實(shí)現(xiàn)delegate怎么辦呢?

// ViewController.m
- (void)viewDidLoad 
{
 ...
 scrollView.delegate = self;
 ...
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
 NSLog(@"%s 執(zhí)行了ViewController里的方法,就不執(zhí)行MYScrollView的方法了", __func__);
 ...
}

實(shí)現(xiàn)

有的同學(xué)會在ViewController里的方法里在調(diào)用一下UIScrollView的方法,可以我們不知道MYScrollView自己實(shí)現(xiàn)了那些delegate方法啊,只能每個(gè)都轉(zhuǎn)發(fā)一下了.

// ViewController.m
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
 [(MYScrollView *)scrollView scrollViewDidScroll:scrollView];
 ...
}
...

這樣做是不是很累?

Objective-C是一門oop的語言,oop的特性有哪些呢:多態(tài).

可以用這特性去解決這一問題:

* 在子類里重寫delegate方法,在ViewController里調(diào)用的delegate其實(shí)是子類自己的myDelegate.

* 然后讓父類的delegate指向自己.在子類里實(shí)現(xiàn)的delegate方法里調(diào)用子類的delegate的方法.

// MYScrollView.m
@synthesize delegate = _myDelegate;

- (instancetype)init
{
 ...
 [super setDelegate:self];
 ...
}

// 需要掛鉤多少delegate方法就寫多少
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
 NSLog(@"%s 我先執(zhí)行", __func__);
 [self.delegate scrollViewDidScroll:scrollView];
}


// ViewController.m
- (void)viewDidLoad 
{
 ...
 scrollView.delegate = self;
 ...
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
 NSLog(@"%s 我接著被執(zhí)行了", __func__);
 ...
}

這樣子類和ViewController里的delegate方法都被執(zhí)行了.

奇巧有了,按照慣例得說說無益了.

嘗試寫個(gè)MYTableView.寫完后發(fā)現(xiàn),尼瑪?shù)腄ataSource的方法可以掛鉤,Delegate的卻失敗了.

// 筆者用的是tableView:cellForRowAtIndexPath: 和numberOfSectionsInTableView: 兩個(gè)方法

UITableView繼承自UIScrollView,UIScrollViewDelegate的方法卻成功了.

筆者猜測造成這樣的原因可能是UITableView內(nèi)部用的是self.delegate和_dataSource去執(zhí)行UITableView協(xié)議里的方法.

方法能不能成功,取決于我們看不到的apple的代碼,這個(gè)技巧還怎么去用呢.

總結(jié)

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

相關(guān)文章

  • 利用iOS開發(fā)實(shí)現(xiàn)翻轉(zhuǎn)撲克牌動畫的方法

    利用iOS開發(fā)實(shí)現(xiàn)翻轉(zhuǎn)撲克牌動畫的方法

    這篇文章主要給大家介紹了關(guān)于利用iOS開發(fā)實(shí)現(xiàn)翻撲克牌動畫的方法,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • 詳談iPhoneX截圖如何帶

    詳談iPhoneX截圖如何帶

    下面小編就為大家分享一篇詳談iPhoneX截圖如何帶"劉海"和圓角,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS簡單抽屜效果的實(shí)現(xiàn)方法

    iOS簡單抽屜效果的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了iOS簡單抽屜效果的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • iOS實(shí)現(xiàn)點(diǎn)擊圖片放大和長按保存圖片的示例

    iOS實(shí)現(xiàn)點(diǎn)擊圖片放大和長按保存圖片的示例

    本篇文章主要介紹了iOS實(shí)現(xiàn)點(diǎn)擊圖片放大和長按保存圖片的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 淺談iOS中三種生成隨機(jī)數(shù)方法

    淺談iOS中三種生成隨機(jī)數(shù)方法

    本文給大家分享的是在IOS中生成隨機(jī)數(shù)的三種方法,以及三種算法的效率對比,有需要的小伙伴可以參考下。
    2015-06-06
  • iOS Crash文件分析方法匯總

    iOS Crash文件分析方法匯總

    今天跟大家一起聊聊iOSCrash文件的幾種分析方法,都是平時(shí)比較常用的,有需要的小伙伴可以參考下
    2017-11-11
  • iOS 原生地圖地理編碼與反地理編碼(詳解)

    iOS 原生地圖地理編碼與反地理編碼(詳解)

    下面小編就為大家?guī)硪黄猧OS 原生地圖地理編碼與反地理編碼(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • IOS開發(fā) UIAlertController詳解及實(shí)例代碼

    IOS開發(fā) UIAlertController詳解及實(shí)例代碼

    這篇文章主要介紹了 IOS開發(fā) UIAlertController詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 基于ios逆向過程中l(wèi)ldb調(diào)試技巧(推薦)

    基于ios逆向過程中l(wèi)ldb調(diào)試技巧(推薦)

    下面小編就為大家?guī)硪黄趇os逆向過程中l(wèi)ldb調(diào)試技巧(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • iOS?Swift?Lazy?var?View失效問題解決

    iOS?Swift?Lazy?var?View失效問題解決

    這篇文章主要為大家介紹了iOS?Swift?Lazy?var?View失效問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評論

吐鲁番市| 鹤岗市| 惠来县| 石家庄市| 秦安县| 米林县| 扎赉特旗| 辽源市| 南漳县| 盐城市| 葫芦岛市| 库尔勒市| 客服| 志丹县| 称多县| 庐江县| 凌源市| 拉萨市| 永嘉县| 宁德市| 峨眉山市| 廊坊市| 壶关县| 梁平县| 镇雄县| 从江县| 平舆县| 卢龙县| 久治县| 延庆县| 桐梓县| 库伦旗| 磐石市| 甘肃省| 商河县| 舟山市| 瓦房店市| 建始县| 吉木萨尔县| 特克斯县| 陈巴尔虎旗|