避免滥用单例singleton,可用类属性代替

一个项目中,往往多处需要用到全局属性或者全局类,方便数据的全局交互,这个时候,大家都会选择采取单例设计模式,但是滥用单例会造成各种各样不必要的影响,具体可参考《滥用单例的影响》,为避免滥用单例,我们可以使用类属性来代替。

类属性的声明

@interface User : NSObject <NSCoding>
//此处要使用class修饰符
@property (copy, nonatomic, class)  NSString *userName;
@end

设置setter和getter,这里要使用+号

@implementation User
static NSString * _userName;
+ (void)setUserName:(NSString *)userName {
    _userName = userName;
}
+ (NSString *)userName {
    return _userName;
}
@end

使用

//赋值
User.userName = @"Zed";
//取值
NSString *un = User.userName;

那么在APP的存活周期内,User.userName则是全局属性,如果想更持久化可用本地化方式存储,或者使用更持久的keychain

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

相关阅读更多精彩内容

友情链接更多精彩内容