如何设置可以在整个应用中访问以及可以从目标C中的其他类访问的类属性?
注意:我知道SO上还有其他答案,但是大多数答案已经过时或被撕裂!标记为重复的问题是11年前提出的...!
最近我有一个项目更深入地研究了这个主题,我想给你一些代码示例,这些示例可能对这里的人有帮助。这也是我自己的某种信息存储方式:)
如何设置可以在整个应用中访问以及可以从目标C中的其他类访问的类属性?
注意:我知道SO上还有其他答案,但是大多数答案已经过时或被撕裂!标记为重复的问题是11年前提出的...!
最近我有一个项目更深入地研究了这个主题,我想给你一些代码示例,这些示例可能对这里的人有帮助。这也是我自己的某种信息存储方式:)
从Xcode 8开始,您可以使用“ class ”标识符在YourClass的头文件中定义类属性,
@interface YourClass : NSObject
@property (class,strong,nonatomic) NSTimer *timer;
@end
要在实现中的类方法中使用类属性,您需要为类属性分配一个静态实例变量。这样,您就可以在类方法(类方法以“ +”开头)中使用此实例变量。
@implementation YourClass
static NSTimer *_timer;
您必须为class属性创建getter和setter方法,因为它们不会自动合成。
+ (void)setTimer:(NSTimer*)newTimer{
if (_timer == nil)
_timer = newTimer;
}
+ (NSTimer*)timer{
return _timer;
}
// your other code here ...
@end
现在,您可以使用以下语法从整个应用程序和其他方法访问class属性-以下是一些示例:
NSTimeInterval seconds = YourClass.timer.fireDate.timeIntervalSinceNow;
[[YourClass timer] invalidate];
您将始终将消息发送到同一对象,多个实例都不会出现问题!
请在此处找到Xcode 11示例项目:GitHub sample code