id类型的对象可以调用任何方法吗?

id类型的对象可以调用任何方法吗?这个问题问出来的时候,就是个坑。

你首先应该问他你说的这个是在MRC下还是在ARC下运行,环境不一样,效果也不一样。

ARC下不可以:因为会做编译检查的,检查过不了当然不能运行,何谈调用。如果你确实想调用可以使用下边这个方法进行调用。

- (id)performSelector:(SEL)aSelector withObject:(id)object;

MRC下可以:

MRC下,任何对象都可以调用任何方法,只不过会给你警告而已。

注释:

如果不进行编译检查的话,按照runtime的特性是都可以进行调用的。只不过是,最后调用会失败,因为对象并没有这个方法。

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

推荐阅读更多精彩内容

  • 一、深复制和浅复制的区别? 1、浅复制:只是复制了指向对象的指针,即两个指针指向同一块内存单元!而不复制指向对象的...
    iOS_Alex阅读 1,424评论 1 27
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,774评论 0 9
  • Objective-C中有两个NSObject,一个是NSObject类,另一个是NSObject协议。而其中NS...
    ScaryMonsterLyn阅读 772评论 0 2
  • 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就...
    麦兜兜买兜兜阅读 689评论 1 4
  • 大纲 0.OC数据类型 1.声明一个类 2.实现一个类 3.创建一个对象 4.对象的注意点 5.对象方法 6.类方...
    天天想念阅读 1,136评论 0 3