关注微信公众号 太平洋学习网 扫描二维码
最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

ios入门教程6:OC变量作用域,self

IOS admin 浏览 评论

在object-c语言中,类的变量属性实际上是有作用域范围的,那么我们oc语言有哪些变量作用域呢,总共有3个作用域,如下。

OC变量作用域名称作用范围
@public
全局都可以访问
@protected只能在类内部或者子类中访问
@private只能在类的内部访问

在默认情况下类的属性的作用域是@protected,我们前面的Student类就有两个属性:int age和int no,也就是说在别的类中想给这些属性变量赋值的话,需要继承这个Student学生类。例如我又创建了一个GoodStudent的类,我需要写一个方法,给age年龄赋值,代码如下。

1.GoodStudent.h申明类代码。

#import "Student.h"
//继承Student类
@interface GoodStudent : Student
//没有在这儿申明的方法就是private方法
//-(void)test;
@end

2.GoodStudent.m实现类的代码。

#import "GoodStudent.h"

@implementation GoodStudent
//外部类方法使用了Student类中的属性age
-(void)test{
        //这里的self指的是
    self.age = 20;
    NSLog(@"年龄是:%d",age);
}
//静态方法使用self
+(void)test2{
    [GoodStudent alloc];
    [self alloc];
    //以上的代码是等效的,写一个就好
}
@end

说明:以上是一个外部类GoodStudent调用内部类Student.h中申明的属性所需要继承的,还有一点就是,凡是没有在.h中申明的方法,就叫private方法,例如上面的test方法,我并没有在GoodStudent.h中申明它,而是直接在GoodStudent.m中写了test这个方法,所以这种方法只能在本类中使用。

self关键字代表的自己本身,在类方法中("-"冒号表示)使用代表的是本类对象,在静态方法中("+"冒号表示)使用代表的是当前类的类名。静态方法只能调用静态方法或者静态属性。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/object-c_ios/2017/0201/52.html

    与本文相关的文章