专栏首页iOS开发笔记iOS开发--performSelector调用和直接调用区别

iOS开发--performSelector调用和直接调用区别

下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用performSelector调用,今天看到有人在问这个问题,我便做一下总结,

[delegate imageDownloader:self didFinishWithImage:image];

[delegate performSelector:@selector(imageDownloader:didFinishWithImage:)withObject:self withObject:image];

1、performSelector是运行时系统负责去找方法的,在编译时候不做任何校验;如果直接调用编译是会自动校验。如果imageDownloader:didFinishWithImage:image:不存在,那么直接调用 在编译时候就能够发现(借助Xcode可以写完就发现),但是使用performSelector的话一定是在运行时候才能发现(此时程序崩溃);Cocoa支持在运行时向某个类添加方法,即方法编译时不存在,但是运行时候存在,这时候必然需要使用performSelector去调用。所以有时候如果使用了performSelector,为了程序的健壮性,会使用检查方法- (BOOL)respondsToSelector:(SEL)aSelector;

2、直接调用方法时候,一定要在头文件中声明该方法的使用,也要将头文件import进来。而使用performSelector时候,可以不用import头文件包含方法的对象,直接用performSelector调用即可。

代码如下:

打印结果:

本文分享自微信公众号 - iOS开发笔记(roclel)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-12-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 破解iPhone竟然是为了公众安全?

    一直以来,iOS系统以安全著称,引来各路高手正向破解挑战。前段时间,以色列的一家公司高调宣布能够解锁任意iPhone设备,包括最新的iPhone X。近期该公司...

    FB客服
  • iOS 9.1 深坑体验及其破解之道

    众所周知,苹果iOS 9的推新速度已经打破了纪录,9.1刚刚于上周推出后,昨天,9.2 beta1已经出来了。 那么,到底iOS9都有哪些坑?网上能够搜索到的那...

    腾讯Bugly
  • 【沙龙干货】Swift是花拳绣腿吗?开发语言与职业生涯如何选择?

    Swift要替代Objective-C?腾讯开发专家从四方面跟你一起探讨App开发趋势和职业发展前景。 腾讯Bugly移动开发者沙龙 第二期:快速发展的Swif...

    腾讯Bugly
  • 小萝莉说Crash(二): Unrecognized selector xxx 之 ForwardInvocation

    2015年不急不忙地到来,小萝莉为大家奉上新年礼包,祝大家新年快乐,希望开发GGMM们新一年的开发工作更加顺利、安心! ^_^ 在上篇的分享中,小萝莉给大家介绍...

    腾讯Bugly
  • 小萝莉说Crash(一):Unrecognized selector sent to instance xxxx

    大家好,我是来自Bugly Crash实验室的小萝莉(害羞ing),很高兴能和大家一起讨论关于移动终端App的Crash问题及解决方法。 在上次的“精神哥讲Cr...

    腾讯Bugly
  • 萝莉有话说:你的App真正适配了iOS 9吗?

    时隔三月,如隔三秋。越过层层文档,穿过条条代码,小萝莉终于又和大家见面了!用户朋友们,我想死你们了!当然萝莉来此,并不是来和大家聊春晚的,我们的主题依旧是iOS...

    腾讯Bugly
  • 如何定位Obj-C野指针随机Crash(三):如何让Crash自报家门

    本文主要介绍如何利用OC Runtime的特性,让OC野指针对象主动抛出自己的信息,秒杀某些全系统栈Crash。 ? 陈其锋,腾讯SNG即通产品部音视频技术中心...

    腾讯Bugly
  • 苹果监管不力?含挖矿插件的软件登录Mac App Store

    近期有安全机构发布报告称,Mac OS端恶意软件数量在2017年暴增了2.7倍之多。而在近期持续爆发的挖矿软件中,却鲜有在App Store存在。不过终于,一款...

    FB客服
  • 手把手教你如何分析 iOS 系统栈 crash

    先上栈,这个 crash 是我们目前开发产品的 top5 crash ? 第一步 对于死在 ojbc _ msgSend 的函数(不仅仅是 msgSend, o...

    腾讯Bugly
  • 【快报】英伟达加强与德国AI研究所关系 | 丰田预计5年后推出智能汽车,能自动避免事故发生

    1Anki推出玩具机器人Cozmo,定位智能教育平台 ---- ? 初创公司Anki昨天发布了一款名叫Cozmo的智能玩具机器人,外观造型将赛车与机器人结合在一...

    新智元

扫码关注云+社区

领取腾讯云代金券