iOS学习——Object-C模拟类变量

iOS学习——Object-C模拟类变量

Object-C中并没有JAVA中的类变量,博主在刚开始时,又是给@property加static修饰,又是给字段加static修饰,都会报错。查阅文档得到以下信息:

  1. static关键字不能用于修饰成员变量
  2. static关键字只能用于修饰局部变量全局变量函数
  3. static修饰局部变量,代表将该局部变量存放到静态存储区
  4. static修饰全局变量,可以限制该全局变量只能被当前源文件访问
  5. static修饰函数,可以限制该函数只能在当前源文件调用

那么现在可以明白OC中的static修饰符跟不少语言中的static不是一回事。

但事实上,类变量确实是面向对象中很有必要的。现在要用另一种方式模拟类变量。

解决方案是:建立static的全局变量,并在实现public的get、set方法,供外部调用

下面给出代码示例,相信你能很快明白其用法。

//
//  Person.h
//  test_command
//
//  Created by 周凌宇 on 15/8/11.
//  Copyright (c) 2015年 周凌宇. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject

+(void) setPlanetName: (NSString *)planetName;
+(NSString *) planetName;

@end
//
//  Person.m
//  test_command
//
//  Created by 周凌宇 on 15/8/11.
//  Copyright (c) 2015年 周凌宇. All rights reserved.
//

#import "Person.h"


static NSString *_planetName;

@implementation Person

+(void) setPlanetName: (NSString *)planetName {
    _planetName = planetName;
}

+(NSString *) planetName {
    return _planetName;
}

@end
//
//  main.m
//  test_command
//
//  Created by 周凌宇 on 15/8/11.
//  Copyright (c) 2015年 周凌宇. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        [Person setPlanetName:@"地球"];
        NSLog(@"%@",[Person planetName]);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/coderfish/p/4875462.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值