2018-05-04

1. 引

NSDate的API中有两个属性使用了这个修饰符

image.png

这个class修饰符其实是静态属性的申明,或者是类属性的申明,并可以同时和其他的修饰符同时使用,这是在Xcode8后添加的,为了和Swift平齐;

2. 使用:

  1. 申明一个class的静态属性;
@property (class, nonatomic, strong) NSString *classProperty;

这时候编译器会给一个警告:


image.png

说静态属性需要一个定义它的方法,用@dynamic或者提供一个方法实现

  1. 于是在.m文件里我们这样干(两种方式):
  • 使用@dynamic
@dynamic classProperty;

然后提供getter或者setter方法,这个看需求,引子里的是readonly,只需要提供一个getter方法即可,

+ (NSString *)classProperty {
    return @"I'm rock man";
}
  • 需要
static NSString *_classProperty;

+ (NSString *)classProperty {
    return _classProperty;
}

+ (void)setClassProperty:(NSString *)classProperty {
    if (![classProperty isEqualToString:_classProperty]) {
        _classProperty = classProperty;
    }
}

直接使用

TestObject.classProperty

你可能感兴趣的:(2018-05-04)