iOS-利用performSelector调用方法

performSelector在主线程中运行。

在调用方法时,有时会利用performSelector调用,

performSelector是运行时系统负责去找方法的,在编译时候不做任何校验;如果直接调用编译是会自动校验。如果方法不存在,在Xcode中写完就可以发现没这个方法),但是使用performSelector的话一定是在运行时候才能发现(此时程序崩溃);Cocoa支持在运行时向某个类添加方法,即方法编译时不存在,但是运行时候存在,这时候必然需要使用performSelector去调用。
与直接调用相比performSelector方法可以灵活的运用,使用方便,只需要告诉他会调用什么方法,然后在多长时间对他进行调用即可。

调用方法
[self performSelector:@selector(clickEvent:) withObject:@"abc" afterDelay:3];

[self clickEvent:@"perform"];

- (void)clickEvent:(NSString *)msg {
    NSLog(@"message:%@",msg);
}

输出
2017-02-04 11:24:18.367 AFN[18840:707947] message:perform
2017-02-04 11:24:21.367 AFN[18840:707947] message:abc

由于运行时可以添加方法所以对方法是否存在的判断是非常重要的,方法不存在会导致崩溃

-(BOOL)respondsToSelector:(SEL)aSelector;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,986评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,037评论 25 709
  • 下面我来盘点我看过的另外七部推理日剧。 首先是《W的悲剧》。 我们这种无权无钱的人,为了生存只能往上爬,所以我无论...
    一别如雨阅读 5,782评论 8 14
  • 晚上,我跑去洗项链,我是个不喜欢穿金戴银打扮的人,因为觉得累赘,不过最近出门却总喜欢这样的累赘,有时候你孤单久了吧...
    落忧先生阅读 2,839评论 0 0
  • 欣赏别人,是对别人的一种理解与沟通,也包含了信任和肯定;欣赏,是一种激励和引导,可以使人扬长避短,才以更健康地成长...
    无名指谢军阅读 8,429评论 1 1

友情链接更多精彩内容