摘要: 名称中一般都带有“in”, "for", "with"等介词。 骆峰命名法(camel casing)。 方法命名: 清晰的方法名从左到右读起来好似一段文章。 6条规则: 1、Boolean 属性应加is前缀。如果某方法返回非属性的Boolean值,那么应该根据其功能,选用has或is当前缀。 2、 阅读全文
posted @ 2016-08-09 18:26 Pikdays 阅读(208) 评论(0) 推荐(0)
摘要: 1、设计类的时候,应充分运用属性来封装数据。 2、应该尽量把对外公布出来的属性设为只读,而且只在确有必要时才将属性对外公布。 3、若属性仅可于对象内部修改,则在“class-continuation分类”中将其由readonly属性扩展为readwrite属性。 这种做法下,如果该属性是nonato 阅读全文
posted @ 2016-08-09 18:18 Pikdays 阅读(239) 评论(0) 推荐(0)
摘要: 自定义类需要自己覆写description方法,否则打印信息时就会调用NSObject类所实现的默认方法。(如果不覆写,只会输出类名和对象的内存地址的信息,这只有在判断两个指针是否指向同一对象时才有用处。) debugDescription方法,此方法的用意与description非常相似。区别在于 阅读全文
posted @ 2016-08-09 18:17 Pikdays 阅读(156) 评论(0) 推荐(0)
摘要: 所有对象均要初始化。 可为对象提供必要信息以便其能完成工作的初始化方法叫做“全能初始化方法”(designated initializer, 也常译为:“指定初始化方法”)。 初始化方法可以调用全能初始化方法来实现(一个类可以有多个)。于是,只有在全能初始化方法中,才会存储内部数据。这样的话,当底层 阅读全文
posted @ 2015-03-27 22:27 Pikdays 阅读(180) 评论(0) 推荐(0)
摘要: Apple 宣称其保留使用所有“两字母前缀”的权利,所以自己选用的前缀应该是三个字母的。 不仅是类名,分类及分类中的方法,第三方库。 阅读全文
posted @ 2015-03-27 13:44 Pikdays 阅读(124) 评论(0) 推荐(0)
摘要: 对象类型并非在编译期就绑定好了,而是要在运行期查找。 id 类型,它能指代任意的 OC 对象类型。编译器假定它能响应所有消息。 对象类型 id,由于其本身已经是指针了。 在运行期检视对象类型,这一操作也叫做“类型信息查询”(introspection, “内省”), 这个特性内置于 Foundati 阅读全文
posted @ 2015-03-27 12:40 Pikdays 阅读(120) 评论(0) 推荐(0)
摘要: 类的方法映射表,开发者可以向其中新增方法、改变方法的实现、交换方法的指针(在实际应用中,意义不大)。 这样我既不需要源代码,也不需要通过继承子类来覆写方法就能改变这个类本身的功能。 在运行期,可以向类中新增或替换方法所对应的方法实现,这个操作叫做“方法调配”。 开发者常用此技术向原有实现中添加新功能 阅读全文
posted @ 2015-03-27 12:12 Pikdays 阅读(147) 评论(0) 推荐(0)
摘要: 在编译期向类发送了其无法解读的消息并不会报错,因为在运行期可以继续向类中添加方法。 当对象接收到无法解读的消息后,就会启动“消息转发”机制,程序员可经由此过程告诉对象应该如何处理未知消息。 消息转发分两阶段: 1、先征询接收者,所属的类是否能动态添加方法,以处理当前这个未知方法,这叫做“动态方法解析 阅读全文
posted @ 2015-03-27 10:56 Pikdays 阅读(141) 评论(0) 推荐(0)
摘要: C语言使用“静态绑定”,也就是说,在编译期就能决定运行时所应调用的函数(也就是说函数地址硬编码在指令之中)。 如果是内联函数,就无法硬编码在指令之中,而是要在运行期读取出来(也就是动态绑定)。 在底层,所有方法都是普通的C函数。 OC对象的每个方法都可以视为简单的C函数。 <return_type> 阅读全文
posted @ 2014-11-27 19:23 Pikdays 阅读(803) 评论(0) 推荐(0)
摘要: 在对象中存放相关信息的方式: 1、从对象所属的类中继承一个子类,然后改用这个子类对象。 然而有时类的实例可能是由某种机制所创建的,无法使用这种机制创建自己所写的子类实例。所以采用第2种方式 “关联对象” 2、关联对象 可以给某对象关联多个对象,这个对象用“键”来区分,存储对象值的时,可以指明“存储策 阅读全文
posted @ 2014-11-27 09:28 Pikdays 阅读(195) 评论(0) 推荐(0)