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 }