A.id
万能指针,可以指向任何对象,实质是NSObject的指针,使用的时候不用加上*
B.NSObject中得类方法new
1.完整地创建一个可用对象步骤
(1)分配存储空间 + alloc
(2)初始化 - init
1 // 1.调用+alloc分配存储空间 2 Person *p1 = [Person alloc]; 3 // 2.调用-init进行初始化 4 Person *p2 = [p1 init]; 5 // 同时进行分配存储空间和初始化 6 Person *p3 = [[Person alloc] init];
(3)构造方法就是init方法
1 @implementation Person 2 3 // 重写-init方法 4 - (id) init 5 { 6 // 1.一定要调用super的init方法 7 self = [super init];// 当前对象self 8 9 // 2.如果对象初始化成功,才能进行接下来的子类初始化 10 if (self != nil) 11 {// 初始化成功 12 self.age = 10; 13 } 14 15 // 3.返回一个已经初始化的对象 16 return self; 17 } 18 19 @end
简化:
1 - (id) init 2 { 3 if (self = [super init])//nil实际是0 4 { 5 self.age = 10; 6 } 7 return self; 8 }
C.自定义构造方法
1 @interface Person : NSObject 2 @property NSString *name; 3 4 /* 5 自定义构造方法的规范 6 1.一定是对象方法,一定以-开头 7 2.返回值一般是id类型 8 3.方法名一般以init开头 9 */ 10 11 - (id) initWithName:(NSString *) name; 12 13 @end 14 15 @implementation Person 16 17 - (id) initWithName:(NSString *) name 18 { 19 if (self = [super init]) 20 { 21 _name = name; 22 } 23 24 return self; 25 } 26 27 @end
原则:父类的成员变量交给父类的方法去处理
谁声明,谁处理