2

だからviewdidloadで私は持っています

adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;

iAd のバナー用。i iOS 4.2+ 用にビルドすると、デバッガー コンソールに次のように表示されます。

ADBannerView: ADBannerContentSizeIdentifier320x50 は非推奨です。代わりに ADBannerContentSizeIdentifierPortrait を使用してください

だから私は:

adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;

4.1 以下ではアプリがクラッシュし、EXC_BAD_ACCESS と通知されます。

どちらを取るべきかわかりませんが、320x50 のものは新しいバージョンで動作しますが、コンソールからその通知/エラーが表示されます。助言がありますか?

4

2 に答える 2

5

わかりました、私はそれを次のように動作させました:

NSString *os = [[UIDevice currentDevice] systemVersion];
        NSString *ioss = [os stringByReplacingOccurrencesOfString:@"." withString:@""];
        if ([ioss length] == 2) {
            NSLog(@"length = 2");
            float x = ([ioss floatValue]*10);
            NSString *ios = [[NSString alloc] initWithFormat:@"%.f",x];
            if ([ios floatValue] > 419) {
                NSLog(@"Portrait");
                adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
                adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
            } else {
                NSLog(@"320x50");
                adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
                adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
            }

        }
        else if ([ioss length] == 3) {
            NSString *ios = ioss;
            NSLog(@"length = 3");
            if ([ios floatValue] > 419) {
                NSLog(@"Portrait");
                adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
                adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
            } else {
                NSLog(@"320x50");
                adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
                adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
            }

        }

このメソッドは、他のあらゆる種類のものに使用できることに注意してください。それは、ios のバージョンを検出し、特定のバージョンより上または下の場合にアクションを実行することです。

しかし、これは私の場合にも機能します:

if ( &ADBannerContentSizeIdentifierPortrait != NULL ) {
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
}
于 2011-07-17T20:00:49.833 に答える
2

ADBannerContentSizeIdentifierPortrait4.2 より前の iOS バージョンには存在しないため、エラーが発生しています。できることは、シンボルが存在するかどうかを確認し、それに基づいてプロパティを設定することです。

if ( &ADBannerContentSizeIdentifierPortrait != NULL ) {
    self.bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
    self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
    self.bannerView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
    self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
}
于 2011-07-15T05:05:52.773 に答える