首页 > 代码库 > [Objective-c 基础 - 2.7] 构造方法、重写init方法

[Objective-c 基础 - 2.7] 构造方法、重写init方法

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) init2 {3     if (self = [super init])//nil实际是04     {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 @end14  15 @implementation Person16 17 - (id) initWithName:(NSString *) name18 {19     if (self = [super init])20     {21         _name = name;22     }23    24     return self;25 }26 27 @end

 

原则:父类的成员变量交给父类的方法去处理
谁声明,谁处理
 
 

[Objective-c 基础 - 2.7] 构造方法、重写init方法