<原>@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  而是有多个  那么这个方法的优势会非常明显

posted @ 2012-09-12 22:20  不曾拥有  阅读(271)  评论(0编辑  收藏  举报