使用Objective-C的Runtime

由于Cocoa Framework中的Foundation中的NSObject所提供的performselector方法最多只能传两个数据参数,如果要传更多的参数,其中一个比较简单的方法是使用Runtime的id objc_msgSend(id self, SEL op, ...)运行时函数。

为了要加入运行时函数的声明,在OS X下需要包含头文件:#import <objc/objc-runtime.h>;在iOS下需要包含头文件:#import <objc/runtime.h>

objc_msgSend方法后面的不定参数必须是id类型,而不能是其它用户自定义的结构体、联合等类型也不能是基本类型,比如浮点数等,否则会导致数据不完整。因此我们要传整数或浮点数时应该使用NSNumber去转。