开发者

iAd Crashing in 3.2

I'm noticing my iAd is causing a crash on iOS 3.2. I am weak linking in the build settings. It crashes in my createAdBanner method

NSString *contentSize;

if (&ADBannerContentSizeIdentifierPortrait != nil) {
    contentSize = UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? ADBannerContentSizeIdentifierPortrait : ADBannerContentSizeIdentifierLandscape;
}
else {
    cont开发者_开发知识库entSize = UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? ADBannerContentSizeIdentifier320x50 : ADBannerContentSizeIdentifier480x32;
}

Here is the error that comes up.

This GDB was configured as "x86_64-apple-darwin".sharedlibrary apply-load-rules all
        Attaching to process 4681.
        Assertion failed: (cls), function getName, file /SourceCache/objc4_Sim/objc4-427.1.1/runtime/objc-runtime-new.m, line 3939.
        Assertion failed: (cls), function getName, file /SourceCache/objc4_Sim/objc4-427.1.1/runtime/objc-runtime-new.m, line 3939.
        Current language:  auto; currently objective-c
        (gdb)

I thought you were able to run iAds on 3.2 if you weak linked. Any ideas or suggestions?


http://developer.apple.com/library/ios/#documentation/userexperience/Reference/ADBannerView_Ref/Reference/Reference.html

ADBannerView is available in 4.0 or later.

You won't be able to show ads in 3.2


Aside from weak-linking, you must check if the ad classes are available on the device. To do so, you can use the following to test for the existence of a class:

Class adClass = NSClassFromString(@"AdBannerView");

if(adClass){
  //ads are available so optionally show them
}else{
  // ads are not available 
}

To check for a particular method, you would use this:

BOOL methodExists = [someObject respondsToSelector:@selector(selectorToTestName:)];

if(methodExists){
   //Safe to call selector
}else{
   //The selector doesn't exist in this version of iOS. 
}

You could also just use the above statement, "inlining" the boolean check:

if([someObject respondsToSelector:@selector(selectorToTestName:)]){
   //Safe to call selector
}else{
   //The selector doesn't exist in this version of iOS. 
}


ADBannerViewcan be used in 4.0 and above. See the apple documentation


use below link it is giving more clearly even to use in ios 3.0+ IAD Tutorial you have to import _weak_framework iAd in the linkingFlags wich is available in the targets.Once go through the link.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜