应用程序崩溃,是否与+[NSDecimalNumber gad_negativeOne]有关?

4
我的应用在添加了 Admob 框架后崩溃了。之前它一直正常运行。
请检查崩溃日志:enter image description here 我在 Google 上尝试过搜索,但没有找到关于这个崩溃的结果。
如果我注释掉 viewDidAppear() 函数中的内容,那么应用程序就可以正常工作(加载应用程序部分)。但是如果我尝试加载 "admob",那么应用程序就会崩溃。

代码:

-(void)viewDidAppear:(BOOL)animated{
    if([Connectivity hasConnectivity]){
        // [self loadAds];
        NSTimer* myTimer = [NSTimer scheduledTimerWithTimeInterval: 15.0 target: self
                                                          selector: @selector(callAfterSixtySecond:) userInfo: nil repeats: YES];
    }
}
-(void) callAfterSixtySecond:(NSTimer*) t
{
    
    if([GMMConnectivity hasConnectivity]){
        
        [self.adBanner removeFromSuperview];
        [self loadAdmob];
    }
}

-(void)loadAdmob{
    
    CGPoint origin;
    if(IS_RETINA){
        if([[UIScreen mainScreen] bounds].size.height >500){
            //        NSLog(@"5");
            origin = CGPointMake(0.0,
                                 568-
                                 CGSizeFromGADAdSize(kGADAdSizeSmartBannerPortrait).height);
        }else{
            //        NSLog(@"4");
            
            origin = CGPointMake(0.0,
                                 (480)-
                                 CGSizeFromGADAdSize(kGADAdSizeSmartBannerPortrait).height);
        }
    }else{
        //        NSLog(@"3");
        
        origin = CGPointMake(0.0,
                             (460)-
                             CGSizeFromGADAdSize(kGADAdSizeSmartBannerPortrait).height);
        
    }
    // Use predefined GADAdSize constants to define the GADBannerView.
    self.adBanner = [[GADBannerView alloc] initWithAdSize:kGADAdSizeSmartBannerPortrait
                                                   origin:origin]
    ;
    
    // Note: Edit SampleConstants.h to provide a definition for kSampleAdUnitID
    // before compiling.
    self.adBanner.adUnitID = MY_BANNER_UNIT_ID;
    self.adBanner.delegate = self;
    [self.adBanner setRootViewController:self];
    [self.view addSubview:self.adBanner];
    self.adBanner.center =
    CGPointMake(self.view.center.x, self.adBanner.center.y);
    [self.adBanner loadRequest:[self createRequest]];
    [self.view addSubview:adBanner_];
}
2个回答

34
你需要将"-ObjC"添加到Build Settings选项卡的Other Linker Flags中。 祝你好运!

但我已经做了那个...请检查我在问题中的最新截图。 - Bangalore
2
我已经将 -ObjC 替换为 -Objc。 - Bangalore
Hi Pei,即使我添加了-ObjC,我仍然遇到同样的异常,请为我提供任何不同的解决方案。(我正在按照https://developers.google.com/mobile-ads-sdk/docs/#ios上建议的所有步骤操作) - Sandeep Khade

0

当你执行以下操作时:

[GADStaticDictionary decrementNumberForKey: shouldNotifyDelegate:];

委托可能是 NSDecimalNumber 类型,而该类没有实现名为 gad_negativeOne 的方法。
从崩溃日志中可以看出问题出在这里。现在您应该检查您的类,并了解您正在设置哪个 delegate,以及 gad_negativeOne 方法在哪里。
此外,像 gad_ 这样带有前缀的方法应该是私有方法。

实际上,在 分类方法 中,前缀是最佳实践。NSDecimalNumber已经有了两个便捷方法 onezero。在我看来,它们只是扩展了NSDecimalNumber,添加了另一个方法来返回带有 -1 的数字。 - David Rönnqvist
对于私有方法,因为如果您扩展一个类并实现一些新方法,您可能会覆盖在公共接口中看不到的方法。 - Matteo Gobbi
但是当我尝试使用每个Google广告SDK时,都会出现相同的错误导致崩溃。 - Bangalore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接