- (void)someMethod
{
if ( [delegate respondsToSelector:@selector(operationShouldProceed)] )
{
if ( [delegate operationShouldProceed] )
{
// do something appropriate
}
}
}
The 文档 http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW29 says:
仅对于正式协议中的可选方法或非正式协议中的方法才需要采取预防措施
这是什么意思?如果我使用正式协议,我可以使用[delegate myMethod]
?
您几乎可以在您认为需要时使用它:检查对象是否实现您要调用的方法。Usually当您有可选方法或非正式协议时,就会完成此操作。
我只用过respondsToSelector
当我编写必须与委托对象通信的代码时。
if ([self.delegate respondsToSelector:@selector(engineDidStartRunning:)]) {
[self.delegate engineDidStartRunning:self];
}
你有时会想使用respondsToSelector
在任何返回和的方法上id
或通用的NSObject
您不确定返回对象的类是什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)