如何在 objective C 中设置 class 属性?
How to setup a class property in objective C?
如何设置一个 class 属性 可以在整个应用程序和 objective C 中的另一个 classes 访问?
注意:我知道这里还有其他答案,但其中大部分都已过时或被撕裂!被标记为重复的问题是 11 年前提出的...!
最近我有一个项目深入探讨了这个主题,我想给你一些可能对这里的人有帮助的代码示例。这也是对自己的一种信息存储:)
从 Xcode 8 开始你可以在 YourClass 的头文件中定义一个 class 属性,使用 "class" 标识符,例如:
@interface YourClass : NSObject
@property (class, strong, nonatomic) NSTimer *timer;
@end
要在您的实现中使用 class 属性 in class 方法,您需要为 class 属性 分配一个静态实例变量。这允许您在 class 方法中使用此实例变量(class 方法以“+”开头)。
@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
如何设置一个 class 属性 可以在整个应用程序和 objective C 中的另一个 classes 访问?
注意:我知道这里还有其他答案,但其中大部分都已过时或被撕裂!被标记为重复的问题是 11 年前提出的...!
最近我有一个项目深入探讨了这个主题,我想给你一些可能对这里的人有帮助的代码示例。这也是对自己的一种信息存储:)
从 Xcode 8 开始你可以在 YourClass 的头文件中定义一个 class 属性,使用 "class" 标识符,例如:
@interface YourClass : NSObject
@property (class, strong, nonatomic) NSTimer *timer;
@end
要在您的实现中使用 class 属性 in class 方法,您需要为 class 属性 分配一个静态实例变量。这允许您在 class 方法中使用此实例变量(class 方法以“+”开头)。
@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