oc基础-self关键字的使用

        

 

#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(@"开始跑步!");
}
@end

int 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 方法名](在定义的类中使用)

原文地址:https://www.cnblogs.com/hui1107464497/p/4496759.html