• <原>@Selector应用-不是对应的class却能调用其class方法


    定义两个controller

    FirstViewController   SecondViewController

    分别为各自定义一个方法  比如  -(void)first;

    -(void)second;

    在RootViewController中  定义一个属性

    @property(nonatomic,retain)UIViewController *currentViewController

    @synthesize currentViewController;

    用来存放当前的congtroller的实例   由于我门并不知道  当前是哪一个controller的实例  所以

    对该属性的定义只能是 通类 UIViewController

    假如我们设定当前是first

    self.currentViewController=firstViewController;

    currentViewController的class是UIViewController   firstViewController 的 class是FirstViewController 但是其父类

    是UIViewController  所以上面的 赋值语句 没有问题

    但是 我们要是想调用firstViewController中的first方法  

    [self.currentViewController first]

    是行不通的  currentViewController的class是UIViewController    而UIViewController 中并没有这个方法

    我们可以通过下面的方法解决

    if([self.currentViewController iskindofclass:[FirstViewController class]])

    {

      FirstViewController *tempController=(FirstViewController *)self.currenViewController;

      [tempController First];

    }

    下面介绍一种更佳简单的方法

    [self.currentViewController performSelector:@selector(first)];

    这个例子只是简单的讲了一下这个方法的作用  如果  此时不光有first  second两个 controller  而是有多个  那么这个方法的优势会非常明显

  • 相关阅读:
    计算机硬件
    队列、堆、栈、堆栈的区别
    操作系统与应用程序的关系
    DNS与HTTPDNS
    配置静态路由传送网络包
    django的nginx配置
    视频流和文件传输相关协议
    HTTPS 对称加密和非对称加密
    HTTP1.1/2.0与QUIC协议
    mysql join联表 + id自增
  • 原文地址:https://www.cnblogs.com/bucengyongyou/p/2682508.html
Copyright © 2020-2023  润新知