iOS怎么定义名为任意的变量

  介绍

小编给大家分享一下iOS怎么定义名为任意的变量,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>需求说明

在实际的编程过程中,我们总要定制一些控件,在定制的过程里,有时喜欢自己实现部分委派方法

//, MYScrollView.m      安康;(instancetype) init   {   ,……=,self.delegae 自我;   ,……   }      安康;(空白)scrollViewDidScroll:(UIScrollView  *)滚动视图   {   ,NSLog (@" % s 我被执行“,,__func__);   ,……   }

粗看上述的代码没什么问题,可是当我们的其他对象也想实现委托怎么办呢?

//, ViewController.m
  安康;(void) viewDidLoad 
  {
  ,……=,scrollView.delegate 自我;
  ,……
  }
  
  安康;(空白)scrollViewDidScroll:(UIScrollView  *)滚动视图
  {
  ,NSLog (@" % s 执行了ViewController里的方法,就不执行MYScrollView的方法了,,,__func__);
  ,……
  }

<>强实现

有的同学会在ViewController里的方法里在调用一下UIScrollView的方法,可以我们不知道MYScrollView自己实现了那些委派方法啊,只能每个都转发一下了。

//, ViewController.m
  安康;(空白)scrollViewDidScroll:(UIScrollView  *)滚动视图
  {
  ,((MYScrollView  *) scrollView  scrollViewDidScroll:滚动视图);
  ,……
  }
  …

<强>这样做是不是很累吗?

objective - c是一门面向对象的语言,oop的特性有哪些呢:多态。

可以用这特性去解决这一问题:

*在子类里重写委派方法,在ViewController里调用的委托其实是子类自己的myDelegate。

*然后让父类的代表指向自己。在子类里实现的代表方法里调用子类的代表的方法。

//, MYScrollView.m
  @synthesize  delegate =, _myDelegate;
  
  安康;(instancetype) init
  {
  ,……
  ,(super  setDelegate:自我);
  ,……
  }//,需要挂钩多少委派方法就写多少
  安康;(空白)scrollViewDidScroll:(UIScrollView  *)滚动视图
  {
  ,NSLog (@" % s 我先执行“,,__func__);
  ,(self.delegate  scrollViewDidScroll: scrollView);
  }//ViewController.m
  安康;(void) viewDidLoad 
  {
  ,……=,scrollView.delegate 自我;
  ,……
  }
  
  安康;(空白)scrollViewDidScroll:(UIScrollView  *)滚动视图
  {
  ,NSLog (@" % s 我接着被执行了,,,__func__);
  ,……
  }

这样子类和ViewController里的代表方法都被执行了。

奇巧有了,按照惯例得说说无益了。

尝试写个MYTableView。写完后发现,尼玛的数据源的方法可以挂钩,委托的却失败了。

//笔者用的是tableView: cellForRowAtIndexPath:和numberOfSectionsInTableView:两个方法

UITableView继承自UIScrollView, UIScrollViewDelegate的方法却成功了。

笔者猜测造成这样的原因可能是UITableView内部用的是self.delegate和_dataSource去执行UITableView协议里的方法。

方法能不能成功,取决于我们看不到的苹果的代码,这个技巧还怎么去用呢。

以上是“iOS怎么定义名为任意的变量”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

iOS怎么定义名为任意的变量