1 #import <Foundation/Foundation.h>
2
3
4 @interface Person : NSObject
5 @property int age;
6 @end
7
8 @implementation Person
9
10 // override
11 - (void)init
12 {
13
14 if (self = [super init])
15 {
16 _age = 10;
17 }
18 return self;
19 }
20 @end
21
22
23 int main()
24 {
25
26 Person *p = [[Person alloc] init];
27 /*
28 在为Person类分配完空间,返回未初始化的Person对象后。
29 先调用Person对象的构造方法,但是由于递归的特性,Person构造
30 函数内又调用NSObject的构造函数,所以是先完成NSObject对象的
31 构造方法,再初始化Person自定义的成员变量。
32
33 主要关注下NSObject得构造方法做什么,根据苹果的官方文档。NSObject
34 只有一个成员变量,isa。init的工作就是初始化isa,所以NSObject的构造
35 方法大概是这样子的。
36
37 - (id)init
38 {
39 isa = [Person class];
40 return self
41 }
42
43 总结:也就是NSObject的构造函数让isa指针指向了当前对象所在的类。
44 */
45 return 0;
46 }