我在我的应用程序中使用谷歌广告。因为我的目的,我创造了习惯。
GADRewardBasedVideoAd类。所以我的代码如下:
enum AdState {
case rewarded
case loaded
case unknown
case error
}
class VideoAd: GADRewardBasedVideoAd {
var adState: AdState = .unknown
}
一些ViewController:
class ViewController: UIViewController {
let rewardAddNewsAd = VideoAd()
...
rewardAddNewsAd.delegate = self
}
在我设置委托应用程序崩溃的代码行中,因为
[App.VideoAd setDelegate:]:发送到实例0x281c7fd20的选择器无法识别
如果我在GADRewardBasedVideoAd类上更改了rewardAddNewsAd,而不是我的自定义子类,那么一切都可以正常工作。
在Google将GAD更新到最新版本之前,这段代码一直在工作。
我正在使用Swift 4.1
最佳答案
也许这是一个bug,但是正如official site中所述,GADRewardBasedVideoAd
有一个单例设计,您不应该创建自己的子类。使用GADRewardBasedVideoAd.shared
访问GADRewardBasedVideoAd
类的实例。
作为一个选项,您可以将AdState
存储在VideoAd
之外的某个地方。例如,在ViewController
中。