id类型的对象可以调用任何方法吗?这个问题问出来的时候,就是个坑。
你首先应该问他你说的这个是在MRC下还是在ARC下运行,环境不一样,效果也不一样。
ARC下不可以:因为会做编译检查的,检查过不了当然不能运行,何谈调用。如果你确实想调用可以使用下边这个方法进行调用。
- (id)performSelector:(SEL)aSelector withObject:(id)object;
MRC下可以:
MRC下,任何对象都可以调用任何方法,只不过会给你警告而已。
注释:
如果不进行编译检查的话,按照runtime的特性是都可以进行调用的。只不过是,最后调用会失败,因为对象并没有这个方法。