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 编译阶段就会出错。
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指向,其所在方法的调用对象(类也是个对象)。
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]; //错误,因为self指向的是类对象,而类对象本身并不存在_age这个成员变量。
70
71
72 return 0;
73 }
74
75 /*总结:
self的作用:
76 1.self指针能在对象方法中访问对象的成员变量。(无论该成员变量的权限是private、protected、public都可以)
2.self指针能调用类方法或对象方法,具体看self指向类对象还是实例对象。
self的编程思想:
1.在方法中想调用其他方法时候。
2.当成员变量与set方法的形参同名时候,如果不想改变成员变量名字。可以用self把成员变量和形参分开。
77 self的使用注意:.self指针指向的是调用当前方法的对象。(类也是对象,叫做类对象)
78 */