2014年10月27日

ios底层开发消息机制(四)消息转发

摘要: 消息转发若想令类能理解某条消息,我们必须以程序码实现出对应的方法才行。但是,在编译期向类发送了其无法解读的消息并不会报错,因为在运行期可以继续向类中添加方法,所以编译器在编译时还无法确知类中到底会不会有某个方法实现。当对象接收到无法解读的消息后,就会启动“消息转发”(message forwardi... 阅读全文

posted @ 2014-10-27 23:43 古成风云 阅读(762) 评论(0) 推荐(1)

ios底层开发消息机制(三)动态方法决议

摘要: 序言如果我们在 Objective C 中向一个对象发送它无法处理的消息,会出现什么情况呢?根据前文《深入浅出Cocoa之消息》的介绍,我们知道发送消息是通过 objc_send(id, SEL, ...) 来实现的,它会首先在对象的类对象的 cache,method list 以及父类对象的 ca... 阅读全文

posted @ 2014-10-27 23:28 古成风云 阅读(410) 评论(0) 推荐(0)

ios底层开发消息机制(二)消息调用过程

摘要: 上一章节对基础概念有了些了解,我们对ObjC 中的消息应该有个大致思路了:示例Bird * aBird = [[Bird alloc] init];[aBird fly];中对 fly 的调用,编译器通过插入一些代码,将之转换为对方法具体实现IMP的调用,这个 IMP是通过在 Bird 的类结构中的... 阅读全文

posted @ 2014-10-27 18:38 古成风云 阅读(400) 评论(0) 推荐(0)

ios底层开发消息机制(一)基本概念

摘要: 在入门级别的ObjC 教程中,我们常对从C++或Java 或其他面向对象语言转过来的程序员说,ObjC 中的方法调用(ObjC中的术语为消息)跟其他语言中的方法调用差不多,只是形式有些不同而已。譬如C++ 中的:Bird * aBird = new Bird();aBird->fly();在ObjC... 阅读全文

posted @ 2014-10-27 18:35 古成风云 阅读(457) 评论(0) 推荐(0)

导航