调用可选的委托方法

cho*_*ise 12 iphone delegates objective-c optional

我为一个类创建了一个委托

@protocol gameDelegate <NSObject>
@optional
-(void)gameStarted;
@required
@end
Run Code Online (Sandbox Code Playgroud)

现在在我的游戏对象中我调用了这个方法:

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

所以现在,如果我在任何地方启动这个对象并设置委托一切正常,直到gameStated被调用,因为它没有在创建游戏对象的主对象中实现(因为它是可选的).

我尝试了一些这方面的变化

if(![self.delegate respondsToSelector: @selector(gameStarted)]) {
    //[self.delegate gameStarted];
}
Run Code Online (Sandbox Code Playgroud)

但这不适合我.任何想法如何使这"真正"可选?

提前致谢

Ole*_*ann 18

省略你的if陈述中的否定:

if ([self.delegate respondsToSelector:@selector(gameStarted)]) {
    ...
}
Run Code Online (Sandbox Code Playgroud)