首页 > 代码库 > 关于performSelector
关于performSelector
偶尔机会接触到了它。由网上的知识总结了一个小代码。希望,对大家有用。
- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view. self.title=@"performSelector"; //performSelector是运行时系统负责去找函数/方法的,在编译时候不做任何校验;但是直接调用肯定在编译是会校验。如果函数不存在,那么直接调用 在编译时候就能够发现(借助Xcode可以写完就发现),但是使用performSelector的话一定是在运行时候才能发现(此时程序崩溃) //Cocoa支持在运行时 向某个类添加方法(应该极少人用到, 即方法编译时不存在,但是运行时候存在,这时候必然需要使用performSelector去调用) /*直接调用方法时候,一定要在头文件中声明该方法,使用时候,也要将头文件import进来 而使用performSelector时候, 可以不用import头文件,对包含方法的 对象 调用performSelector即可*/ // 没有参数 BOOL isNoParam= [self respondsToSelector:@selector(methodNoParam)]; if (isNoParam) { [self performSelector:@selector(methodNoParam)]; } // 一个参数 BOOL isOneParam= [self respondsToSelector:@selector(methodWithOneParam:)]; if (isOneParam) { [self performSelector:@selector(methodWithOneParam:) withObject:@"firsht"]; } // 二个参数 BOOL isParams= [self respondsToSelector:@selector(methodWithParams: andParamSecond:)]; if (isParams) { [self performSelector:@selector(methodWithParams: andParamSecond:) withObject:@"first" withObject:@"second"]; }}#pragma -mark -perform- (void)methodNoParam{ NSLog(@"methodNoParam");}- (void)methodWithOneParam:(id)paramFirst{ NSLog(@"methodWithOneParam: %@", paramFirst); }- (void)methodWithParams:(id)paramFirst andParamSecond:(id) paramSecond{ NSLog(@"methodWithOneParam: %@,%@", paramFirst,paramSecond); }
打印出的结果:
2014-08-11 20:59:43.895 performSelector[11302:60b] methodNoParam
2014-08-11 20:59:43.895 performSelector[11302:60b] methodWithOneParam: firsht
2014-08-11 20:59:43.896 performSelector[11302:60b] methodWithOneParam: first,second
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。