【问题标题】:How to setup a class property in objective C? [duplicate]如何在目标 C 中设置类属性? [复制]
【发布时间】:2020-07-27 18:16:20
【问题描述】:

如何设置一个可以在整个应用程序和目标 C 中的其他类中访问的类属性?

注意:我知道 SO 这里还有其他答案,但大多数答案都已过时或被撕裂!标记为重复的问题是11年前问的……!

最近我有一个项目深入研究了这个主题,我想给你一些代码示例,这些示例可能对这里的人有所帮助。这也是给我自己的某种信息存储:)

【问题讨论】:

    标签: objective-c class variables class-method class-variables


    【解决方案1】:

    从 Xcode 8 开始,您可以在 YourClass 的头文件中定义一个类属性,使用“class”标识符,如:

    @interface YourClass : NSObject
    
    @property (class, strong, nonatomic) NSTimer *timer;
    
    @end
    

    要在实现的类方法中使用类属性,您需要为类属性分配一个静态实例变量。这允许您在类方法中使用此实例变量(类方法以“+”开头)。

    @implementation YourClass
    
    static NSTimer *_timer;
    

    您必须为类属性创建 getter 和 setter 方法,因为它们不会自动合成。

    + (void)setTimer:(NSTimer*)newTimer{
        if (_timer == nil)
        _timer = newTimer;
    }
    
    + (NSTimer*)timer{
        return _timer;
    }
    
    // your other code here ...
    
    @end
    

    现在您可以使用以下语法从整个应用程序和其他方法访问类属性 - 以下是一些示例:

    NSTimeInterval seconds = YourClass.timer.fireDate.timeIntervalSinceNow;
    
    [[YourClass timer] invalidate];
    

    您将始终向同一个对象发送消息,多个实例没有问题!

    请在此处找到 Xcode 11 示例项目:GitHub sample code

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      相关资源
      最近更新 更多