如何检查自定义委托是否已设置?

Ser*_*nce 3 iphone cocoa-touch delegates ios

我已经实现了一个自定义委托RandomClassDelegate,in RandomClass.mRandomClass.h.现在我需要实现委托变量,并让它调用协议中的方法,如下所示:

[self.delegate randomClassDelegateMethod];
Run Code Online (Sandbox Code Playgroud)

显然,如果delegate从未设置过,这将导致程序崩溃并导致运行时错误.明显的解决方案就是:

if (delegate)
{
[self.delegate randomClassDelegateMethod];
}
Run Code Online (Sandbox Code Playgroud)

但我想知道这是否是正确的模式,或者是否有更好的方法来执行此操作,可能在协议或其他地方?

Ric*_*III 7

您应该-respondsToSelector:用来检查委托是否有效:

if ([delegate respondsToSelector:@selector(myDelegateMethod)])
     [delegate myDelegateMethod];
Run Code Online (Sandbox Code Playgroud)

不要担心检查nil,因为您可以向nil对象发送消息,它将不执行任何操作.