摘要: 所有对象均要初始化。 可为对象提供必要信息以便其能完成工作的初始化方法叫做“全能初始化方法”(designated initializer, 也常译为:“指定初始化方法”)。 初始化方法可以调用全能初始化方法来实现(一个类可以有多个)。于是,只有在全能初始化方法中,才会存储内部数据。这样的话,当底层 阅读全文
posted @ 2015-03-27 22:27 Pikdays 阅读(183) 评论(0) 推荐(0)
摘要: Apple 宣称其保留使用所有“两字母前缀”的权利,所以自己选用的前缀应该是三个字母的。 不仅是类名,分类及分类中的方法,第三方库。 阅读全文
posted @ 2015-03-27 13:44 Pikdays 阅读(127) 评论(0) 推荐(0)
摘要: 对象类型并非在编译期就绑定好了,而是要在运行期查找。 id 类型,它能指代任意的 OC 对象类型。编译器假定它能响应所有消息。 对象类型 id,由于其本身已经是指针了。 在运行期检视对象类型,这一操作也叫做“类型信息查询”(introspection, “内省”), 这个特性内置于 Foundati 阅读全文
posted @ 2015-03-27 12:40 Pikdays 阅读(122) 评论(0) 推荐(0)
摘要: 类的方法映射表,开发者可以向其中新增方法、改变方法的实现、交换方法的指针(在实际应用中,意义不大)。 这样我既不需要源代码,也不需要通过继承子类来覆写方法就能改变这个类本身的功能。 在运行期,可以向类中新增或替换方法所对应的方法实现,这个操作叫做“方法调配”。 开发者常用此技术向原有实现中添加新功能 阅读全文
posted @ 2015-03-27 12:12 Pikdays 阅读(149) 评论(0) 推荐(0)
摘要: 在编译期向类发送了其无法解读的消息并不会报错,因为在运行期可以继续向类中添加方法。 当对象接收到无法解读的消息后,就会启动“消息转发”机制,程序员可经由此过程告诉对象应该如何处理未知消息。 消息转发分两阶段: 1、先征询接收者,所属的类是否能动态添加方法,以处理当前这个未知方法,这叫做“动态方法解析 阅读全文
posted @ 2015-03-27 10:56 Pikdays 阅读(144) 评论(0) 推荐(0)