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