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

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

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

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

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

你可能感兴趣的:(浅谈消息和函数调用的关键区别)