亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

需求說明

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

// MYScrollView.m

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

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

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

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

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

實現(xiàn)

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

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

這樣做是不是很累?

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

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

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

* 然后讓父類的delegate指向自己.在子類里實現(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í)行了.

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

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

// 筆者用的是tableView:cellForRowAtIndexPath: 和numberOfSectionsInTableView: 兩個方法

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

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

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

總結(jié)

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

相關(guān)文章

  • IOS提醒用戶重新授權(quán)打開定位功能

    IOS提醒用戶重新授權(quán)打開定位功能

    這篇文章主要介紹了IOS提醒用戶重新授權(quán)打開定位功能的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • 針對iOS10新增Api的詳細研究

    針對iOS10新增Api的詳細研究

    這篇文章主要針對iOS10新增Api進行詳細研究,基于Api層面,著重看一些具體用法所做的筆記,感興趣的小伙伴們可以參考一下
    2016-09-09
  • ios scrollview嵌套tableview同向滑動的示例

    ios scrollview嵌套tableview同向滑動的示例

    本篇文章主要介紹了ios scrollview嵌套tableview同向滑動的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • IOS利用CocoaHttpServer搭建手機本地服務(wù)器

    IOS利用CocoaHttpServer搭建手機本地服務(wù)器

    這篇文章主要介紹了IOS利用CocoaHttpServer搭建手機本地服務(wù)器的步驟,幫助大家更好的理解和學(xué)習(xí)使用ios開發(fā),感興趣的朋友可以了解下
    2021-04-04
  • iOS使用Charts框架繪制柱形圖

    iOS使用Charts框架繪制柱形圖

    本文主要介紹了iOS使用Charts框架繪制柱形圖的方法,具有一定的參考價值,下面跟著小編一起來看下吧
    2016-12-12
  • iOS開發(fā)之枚舉用法小結(jié)

    iOS開發(fā)之枚舉用法小結(jié)

    大家都知道枚舉是C語言中的一種基本數(shù)據(jù)類型,是一個"被命名的整型常量"的集合,它不參與內(nèi)存的占用和釋放,我們在開發(fā)中使用枚舉的目的只有一個,那就是為了增加代碼的可讀性。下面就來來看看在iOS中枚舉的用法,有需要的朋友們可以看看。
    2016-09-09
  • ios開發(fā)中時間轉(zhuǎn)換的方法集錦

    ios開發(fā)中時間轉(zhuǎn)換的方法集錦

    這篇文章主要介紹了ios開發(fā)中時間轉(zhuǎn)換的方法集錦,需要的朋友可以參考下
    2015-05-05
  • IOS實現(xiàn)上滑隱藏NvaigtionBar而下拉則顯示效果

    IOS實現(xiàn)上滑隱藏NvaigtionBar而下拉則顯示效果

    這篇文章給大家介紹了如何實現(xiàn)APP上滑時隱藏navigationBar而下拉則又會顯示,雖然也是隱藏但是效果和其他完全不一樣,因為以前沒做過所以試著去實現(xiàn)一下,現(xiàn)在分享給大家,有需要的可以參考借鑒。
    2016-09-09
  • 詳解iOS應(yīng)用開發(fā)中autoresizing尺寸自動適應(yīng)屬性的用法

    詳解iOS應(yīng)用開發(fā)中autoresizing尺寸自動適應(yīng)屬性的用法

    這篇文章主要介紹了iOS應(yīng)用開發(fā)中autoresizing尺寸自動適應(yīng)屬性的用法,文中講解了使用代碼和Storyboard兩種方式調(diào)節(jié)autoresizing的方法,示例代碼為Objective-C,需要的朋友可以參考下
    2016-03-03
  • iOS統(tǒng)計項目的代碼總行數(shù)

    iOS統(tǒng)計項目的代碼總行數(shù)

    最近一個項目有段時間了,不知道怎樣可以統(tǒng)計出寫了多少行代碼,如何處理這個問題呢,下面我們來探討下。
    2015-06-06

最新評論