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