天天看点

【Objective-C】self关键字

前言:OC中有一个self关键字,用法跟Java中的this类似,都是代表着当前方法的调用者。但self和this还是有区别的

1、 java中的this只能在动态方法中,静态方法中不能使用;

2、 OC中的self既可以在动态方法中,也可以用在静态方法中;

一、Java中的this只能用在动态方法中,不能用在静态方法

       1、在动态方法中使用this关键字

public class Student {
    private int age;
    public void setAge(int age) {
        this.age = age;
    }
}
           

这里的this代表着调用setAge方法的某个Student对象

        2、要是在静态方法中使用this,会直接报错

二、OC中的self既可以用在动态方法中,也可以用在静态方法中

       1、self在动态方法中

@implementation Student

- (void)test2 {

}

- (void)test3 {
    [self test2];
}

@end
           

self关键字,这里的self代表着调用test3方法的某个Student对象

第8行代码的作用是调用Student对象的动态方法test2   

       2、self在静态方法中

@implementation Student

+ (void)test2 {

}

+ (void)test3 {
    [Student test2];
    
    [self test2];
}

@end
           

这里定义的是静态的方法,看方法前面的符号“+”,在前面我们知道: self代表着当前方法的调用者。当前方法是test3,那test3的调用者是谁呢?(静态方法)肯定是Student这个类,因为test3是个静态方法。因此这里的self代表着Student这个类. 因此,第8行、第10行的作用是一样,都是调用了静态方法test2

        3、总结

      1> 在动态方法中,self代表着"对象"

      2> 在静态方法中,self代表着"类"

      3> 一句话总结就是:self代表着当前方法的调用者

    感谢互联网~~