【问题标题】:App crashing with +[NSDecimalNumber gad_negativeOne]: issue?应用程序因 +[NSDecimalNumber gad_negativeOne] 崩溃:问题?
【发布时间】:2014-05-25 09:09:45
【问题描述】:

我的应用程序之前运行良好,然后我添加了admob framework,现在它崩溃了。

请检查崩溃日志,

我已在 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_];
}

【问题讨论】:

    标签: ios objective-c crash admob google-ad-manager


    【解决方案1】:

    您需要将“-ObjC”添加到Build Settings标签的Other Linker Flags。 祝你好运!

    【讨论】:

    • 但我已经这样做了..请检查我最新的有问题的屏幕截图。
    • 我添加了 -Objc 而不是 -ObjC
    • 嗨 Pei 即使添加 -ObjC 我也遇到了同样的异常,请建议我任何不同的解决方案。(我正在遵循developers.google.com/mobile-ads-sdk/docs/#ios 建议的所有步骤)
    【解决方案2】:

    当你这样做时:

    [GADStaticDictionary decrementNumberForKey: shouldNotifyDelegate:];
    

    委托可能是NSDecimalNumber类型,而这个类没有实现一个名为 gad_negativeOne的方法。

    从崩溃日志来看,问题是这样的。现在您应该检查您的课程并了解您在设置什么delegate,以及gad_negativeOne 方法在哪里。

    还因为,像 gad_ 这样的带有前缀的方法应该是一个私有方法

    【讨论】:

    • 实际上,前缀是类别方法的最佳实践。 NSDecimalNumber 已经为onezero 提供了两种方便的方法。在我看来,他们只是用另一种方法扩展了 NSDecimalNumber,以返回带有 -1 的数字。
    • 对于私有方法,因为如果你扩展一个类并实现一些新方法,你可以覆盖一个你在公共接口中看不到的方法。
    • 但是当我尝试每一个谷歌广告 sdk 时,它都因同样的错误而崩溃
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2017-01-27
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多