objective-c 编程基础(3.2 属性作用域)

属性作用域

【访问控制符】

@protected, 在此类、子类中访问。

@private,只在本类中访问。

 @public,在所有类中都可以访问。

如下图所示:

#import <Foundation/Foundation.h>

extern NSString *nstr;
@interface Person : NSObject{
    //实例变量作用域
    @protected NSString *_name; //@protected,在整个类中、子类均可以访问,实例变量的默认情况
    @private int _sex;  //@private, 在当前类中访问
    @public int _age;   //@public, 所有类都可以访问
}

@end
测试访问效果:
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        Person *person = [[Person alloc] init];
        //person->_name;  //@protected无法访问
        //person->_sex;   //@private无法访问
        person->_age;   //@public可以访问
    
       
    }
    return 0;
}

【外部变量】

外部变量,可以被所有类访问。在.h文件中使用“extern”访问。如下图所示:

#import "Person.h"

NSString *nstr = @"天气不好"; //外部变量,可以被任何类访问
@implementation Person

@end

#import <Foundation/Foundation.h>

extern NSString *nstr;
@interface Person : NSObject{
    //实例变量作用域
    @protected NSString *_name; //@protected,在整个类中、子类均可以访问,实例变量的默认情况
    @private int _sex;  //@private, 在当前类中访问
    @public int _age;   //@public, 所有类都可以访问
}

@end
下面对外部变量进行访问并赋值,如下图所示:

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
      
       
        nstr = @"天气真好";
        NSLog(@"%@",nstr);
      
    }
    return 0;
}
【static、const】

static, 只对第一次赋值有效,并且随类的生成而生成,当类销毁后依然保留值。

const,一次性赋值,不可改变。
如下图所示:

int geti(){
    static int i = 0;
    i++;
    return i;
}
int getit(){
    const int a = 0;
//    a++;
    return a;
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        Person *person = [[Person alloc] init];
        //person->_name;  //@protected无法访问
        //person->_sex;   //@private无法访问
        person->_age;   //@public可以访问
        nstr = @"天气真好";
        NSLog(@"%@",nstr);
        geti();
         geti();
         geti();
        NSLog(@"%i",geti());
        NSLog(@"%i",getit());
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值