@property class

偶然间看到一段代码


@property (nonatomic, class, readonly, nonnull) NSArray<NSString *> * favoritesPlaylist;

应该叫类变量,类属性,类成员还是什么的,具体还是上代码吧,我们先在头文件 写好

@interface User : NSObject
@property (class, nonatomic, assign, readonly) NSInteger userCount;
@property (class, nonatomic, copy) NSUUID *identifier;
+ (void)resetIdentifier;
@end

然后m文件这样写

@implementation User
static NSUUID *_identifier = nil;
static NSInteger _userCount = 0;

get方法

+ (NSUUID *)identifier {
  if (_identifier == nil) {
    _identifier = [[NSUUID alloc] init];
  }
  return _identifier;
}

+ (void)setIdentifier:(NSUUID *)newIdentifier {
  if (newIdentifier != _identifier) {
    _identifier = [newIdentifier copy];
  }
}

+ (NSInteger)userCount {
  return _userCount;
}

假如需要记录创建次数

- (instancetype)init
{
  self = [super init];
  if (self) {
    _userCount += 1;
  }
  return self;
}

如果你的类方法是每次都创建一个实例对象,就没必要写什么lazyloading

+ (void)resetIdentifier {
  _identifier = [[NSUUID alloc] init];
}

然后我们就可以愉快地使用了

User.userCount;
User.identifier;

例子

for (int i = 0; i < 3; i++) {
    self.user = [[User alloc] init];
    NSLog(@"User count: %ld",(long)User.userCount);
    NSLog(@"Identifier = %@",User.identifier);
}

[User resetIdentifier];    
NSLog(@"Identifier = %@",User.identifier);

Swift的写法

public class User : NSObject { 
  public class var userCount: Int { get }
  public class var identifier: UUID!   
  public class func resetIdentifier()
}

学习文章:
https://useyourloaf.com/blog/objective-c-class-properties/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,299评论 4 61
  • 有一天,丰先生忽然灵感来了,研墨挥毫画就了一幅题为《卖羊》的漫画:一个农人牵着两只湖羊,到羊肉馆来卖给老板。画好后...
    小米万阅读 2,350评论 0 1
  • 杨得意阅读 1,111评论 0 0
  • 最近很烦,事情一层一层堆积过来。往往你没有做完一件事的时候又来另一件事。最后压得你每件事情都无法做好。 规划的事情...
    馒头石头木头阅读 2,905评论 3 3
  • 诗歌,梦也似的在我的心头呼唤 读诗,天马行空的心都将脚踏实地 抄写,谁的笔迹潦草,泼洒了一地稚嫩 停笔,诗歌等待后...
    成长路阅读 1,436评论 0 0