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

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

类属性的声明

@interface User : NSObject 
//此处要使用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

你可能感兴趣的:(避免滥用单例singleton,可用类属性代替)