您的位置:首页 > 移动开发 > Objective-C

【Objective-C】self关键字

2015-07-16 11:19 465 查看
前言: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代表着当前方法的调用者

感谢互联网~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: