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 先調(diào)用Person對象的構(gòu)造方法,但是由于遞歸的特性,Person構(gòu)造
30 函數(shù)內(nèi)又調(diào)用NSObject的構(gòu)造函數(shù),所以是先完成NSObject對象的
31 構(gòu)造方法,再初始化Person自定義的成員變量。
32
33 主要關(guān)注下NSObject得構(gòu)造方法做什么,根據(jù)蘋果的官方文檔。NSObject
34 只有一個成員變量,isa。init的工作就是初始化isa,所以NSObject的構(gòu)造
35 方法大概是這樣子的。
36
37 - (id)init
38 {
39 isa = [Person class];
40 return self
41 }
42
43 總結(jié):也就是NSObject的構(gòu)造函數(shù)讓isa指針指向了當(dāng)前對象所在的類。
44 */
45 return 0;
46 }