如何从 objective c 中的 class 方法调用委托方法?

How to call a delegate method from a class method in objective c?

我想从 class 方法调用委托方法。

我的演示代码

ClassA.h

@interface ClassA: NSObject<MyProtocol>

+ (void)demoMethod;
@property (nonatomic, weak) id<MyProtocol> delegate;

ClassA.m

+ (void)demoMethod {
    if ([self.delegate respondsToSelector:@selector(refreshViewController)]) {
                [self.delegate refreshViewController];
       }
  }

上面代码的错误是:

请帮我从 class 方法中调用委托方法

谢谢!!!

您不能从静态 (class) 函数访问实例属性。

在你的例子中,在你的演示方法中,self 不是指 ClassA 实例 ,而是指 ClassA 本身.

这种行为没有通用的解决方案;它们都是一种变通方法,具体取决于您的需要:

  • 保持对实例的静态引用(某种单例方法)
  • 不要将 demoMethod 设为静态函数
  • 将当前/最新委托保存在静态 属性 中并使用此

如果您想从 class 访问它,那么 delegate 应该是 class 变量:

@interface ClassA: NSObject<MyProtocol>

+ (void)demoMethod;
@property (nonatomic, weak, class) id<MyProtocol> delegate;