1 #import <Foundation/Foundation.h>
2
3 @interface Person : NSObject
4 {
5 int _age;
6 @private
7 int _fuck;
8 }
9 + (void)test;
10 + (void)test1;
11 - (void)test1;
12 - (void)test;
13 - (void)modify;
14 - (int)age;
15 @end
16
17 @implementation Person
18 + (void)test
19 {
20 [self test1];
21 }
22 + (void)test1
23 {
24 NSLog(@"Called Class Method test1");
25 }
26 - (void)test1
27 {
28 NSLog(@"Called Instance Method test1");
29 }
30 - (void)test
31 {
32 [self test1];
33 }
34
35 - (void)modify
36 {
37 self->_age = 10;
38 self->_fuck = 20;
39 }
40
41 // error 編譯階段就會(huì)出錯(cuò)。
42 //+ (void)modify
43 //{
44 // self->_age = 10;
45 //}
46
47 - (int)age
48 {
49 return _age;
50 }
51
52 - (int)fuck
53 {
54 return _fuck;
55 }
56 @end
57
58 int main() {
59
60 Person *p = [Person new];
61 [p test]; // 輸出 Called Instance Method test1
62 [Person test]; // Called Class Method test1.由以上兩句可知,self指向,其所在方法的調(diào)用對(duì)象(類(lèi)也是個(gè)對(duì)象)。
63 [p modify];
64
65 int a = p.age;
66 int f = p.fuck;
67 NSLog(@"a = %d,f = %d", a, f);
68
69 //[Person modify]; //錯(cuò)誤,因?yàn)閟elf指向的是類(lèi)對(duì)象,而類(lèi)對(duì)象本身并不存在_age這個(gè)成員變量。
70
71
72 return 0;
73 }
74
75 /*總結(jié):
self的作用:
76 1.self指針能在對(duì)象方法中訪問(wèn)對(duì)象的成員變量。(無(wú)論該成員變量的權(quán)限是private、protected、public都可以)
2.self指針能調(diào)用類(lèi)方法或?qū)ο蠓椒ǎ唧w看self指向類(lèi)對(duì)象還是實(shí)例對(duì)象。
self的編程思想:
1.在方法中想調(diào)用其他方法時(shí)候。
2.當(dāng)成員變量與set方法的形參同名時(shí)候,如果不想改變成員變量名字??梢杂胹elf把成員變量和形參分開(kāi)。
77 self的使用注意:.self指針指向的是調(diào)用當(dāng)前方法的對(duì)象。(類(lèi)也是對(duì)象,叫做類(lèi)對(duì)象)
78 */