?
#import <Foundation/Foundation.h>@interface Student : NSObject {int _age;char *_name; } - (void) study; - (void) run;+ (void) play; + (void) run; @end@implementation Student - (void) study {NSLog(@"%s在學習",self->_name);[self run];//若在此調用類方法會報錯的,因為該self是對象,不能調用類方法 } - (void) run {NSLog(@"今天有一個學生在跑步"); }+ (void) play {NSLog(@"上體育課啦");[self run];//若在此調用對象方法會報錯的,因為該self是指向類,不能調用對象方法 } + (void) run {NSLog(@"開始跑步!"); } @endint main() {[Student play];// 結果:上體育課啦// 開始跑步!Student *stu=[Student new];stu->name="aa";[stu study];//結果:aa在學習// 今天有一個學生在跑步 }
?
1.誰調用了self當前所在的方法,self就指向誰(self相當于一個指針)
? ?當self所在方法是被對象調用,那么self就指向了調用的那個對象
? ?當self所在的方法是由類調用,那么self就是指向該類
2.在對象方法中可以使用 self -> 成員變量名 ?訪問類對象中的成員變量
3.也可以用self調用類方法/對象方法 ?:[self 方法名](在定義的類中使用)