摘要:
**以下内容中 interface 指代传统意义上的接口, 而@interface 指代 Objective-C 中的类型规范概念,以免混乱。看到这一章,有点奇怪,其实只要将 protocal 当作 C# 里面的接口来认识就好了。因为 Objective-C 给每个 Class 都分配了一个 @interface ,因此用这人概念来表达 interface 的意思。抽象出接口的目的:1. 相似方法组的实现有共同的规范。2. 让“接口”独立于类。3. 封装没有继承关系的类的共性。if ( [assistant respondsToSelector:@selector(helpOut:)] ) { 阅读全文
摘要:
创建一个对象需要丙步:1. 动态为新对象分配内存。2. 将新分配的内存与相关的值产生关联。直到这两步都做完,对象创建过程才算全部完成,虽然是两个步聚,但是在编写代码的时候通常使用一行代码来完成:id anObject = [[Rectangle alloc] init];分离这两个步骤给我们更多的选择择。基对象 NSObject 中的 alloc 和 allocWithZone 方法提供两种分配方式 。这两个方法一般不需要在子类中覆写。它们为成员变量分配足够的内存以供使用。具体的步骤:1. 初始化一个 isa 实例并指向 class object. 2. 将其它成员变量置为零。对象还需要进行进 阅读全文