Ser*_*nce 3 iphone cocoa-touch delegates ios
我已经实现了一个自定义委托RandomClassDelegate,in RandomClass.m和RandomClass.h.现在我需要实现委托变量,并让它调用协议中的方法,如下所示:
[self.delegate randomClassDelegateMethod];
Run Code Online (Sandbox Code Playgroud)
显然,如果delegate从未设置过,这将导致程序崩溃并导致运行时错误.明显的解决方案就是:
if (delegate)
{
[self.delegate randomClassDelegateMethod];
}
Run Code Online (Sandbox Code Playgroud)
但我想知道这是否是正确的模式,或者是否有更好的方法来执行此操作,可能在协议或其他地方?
您应该-respondsToSelector:用来检查委托是否有效:
if ([delegate respondsToSelector:@selector(myDelegateMethod)])
[delegate myDelegateMethod];
Run Code Online (Sandbox Code Playgroud)
不要担心检查nil,因为您可以向nil对象发送消息,它将不执行任何操作.
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |