如何在Objective-C中使用可选的协议方法?

时间:2014-09-12 07:14:32

标签: ios objective-c xcode ios8 chartboost

我仍然是Objective-C的新手,但我已经成功创建了自己的应用,而且我在为Chartboost实施视频广告方面遇到了一些麻烦。

我正在实施奖励视频,该视频会创建一个弹出窗口,为用户提供免费生活,以换取观看视频。我可以让弹出窗口正常工作。但我无法弄清楚用户是否决定观看视频。

我知道Chartboost.h文件有适当的方法,列在@optional下,但我不知道如何在我的Level1.m文件中使用它

 - (void)didClickRewardedVideo:(CBLocation)location;

另请注意,Chartboost.m未包含在他们给我的框架中。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我不熟悉Chartboost库,但听起来ChartboostDelegate是一个需要在自己的代码中实现的协议,就像任何委托对象一样。当点击奖励视频时,该库将在某些注册对象上调用didClickRewardedVideo:。您是否已将自己设置为Chartboost实例或类似实例的代理?

因此,在Level1课程中,您必须声明符合协议并实施该方法(如果您需要......它毕竟是可选的):

@interface Level1 () <ChartboostDelegate>
@end

@implementation

// ...
// ...

- (void)didClickRewardedVideo:(CBLocation)location
{
    // Video was clicked. Do something appropriate.
}

@end

您可以在Concepts in Objective-C Programming文档中了解有关Cocoa中委托模式的更多信息。