Vikings
Vikings

Reputation: 2527

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 {
    contentSize = 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?

Upvotes: 0

Views: 272

Answers (4)

Moshe
Moshe

Reputation: 58097

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. 
}

Upvotes: 1

ajay
ajay

Reputation: 3345

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.

Upvotes: 0

Gypsa
Gypsa

Reputation: 11314

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

Upvotes: 0

chilitechno.com
chilitechno.com

Reputation: 1575

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

Upvotes: 3

Related Questions