浅谈消息和函数调用的关键区别

1.函数如果没有声明就去调用的话,会造成编译失败,而消息就不会这样。

2.Objective-C中调用函数的方法是消息传递,它和普通函数调用的分别是:我们可以随时对一个对象传递任何消息,并且不需要在编译的时候去声明这些方法。所以Objective-C可以在runtime的时候传递任何消息。

3.performSelector是运行时系统负责去找函数或方法的,在编译的时候不做任何校验;但是直接调用在编译时肯定会校验,直接调用在编译的时候就能够发现,但是使用performSelector的话,就一定是在运行的时候才能发现,如果没有的话,程序会崩快,着可能也就是在写delegate的时候,为保证程序健壮性,会使用如下函数校验-(BOOL)respondsToSelector:(SEL)aSelector;

4.Cocoa 支持在运行时向某个类添加方法,即方法编译时不存在,但是运行的时候存在,这个时候就需要使用performSelector去调用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容