3

これが私のiAdコードで、警告が表示されます

setRequiredContentSizeIdentifiers - deprecated in iOS 6
ADBannerContentSizeIdentifier320x50 - deprecated in iOS 4.2
ADBannerContentSizeIdentifier480x32 - deprecated in iOS 4.2
setCurrentContentSizeIdentifier - deprecated in iOS 6
ADBannerContentSizeIdentifier480x32 - deprecated in iOS 4.2

警告がないようにこれを修正するにはどうすればよいですか。

- (int)getBannerHeight:(UIDeviceOrientation)orientation
{
    if (UIInterfaceOrientationIsLandscape(orientation)) {
        return 32;
    } else {
        return 50;
    }
}

- (int)getBannerHeight
{
    return [self getBannerHeight:[UIDevice currentDevice].orientation];
}

- (void)createAdBannerView
{
    Class classAdBannerView = NSClassFromString(@"ADBannerView");
    if (classAdBannerView != nil) {
        self->adView = [[classAdBannerView alloc]
                              initWithFrame:CGRectZero];
        [adView setRequiredContentSizeIdentifiers:[NSSet setWithObjects:
                                                          ADBannerContentSizeIdentifier320x50,
                                                          ADBannerContentSizeIdentifier480x32, nil]];
        if (UIInterfaceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
            [adView setCurrentContentSizeIdentifier:
             ADBannerContentSizeIdentifier480x32];
        } else {
            [adView setCurrentContentSizeIdentifier:
             ADBannerContentSizeIdentifier320x50];
        }
        [adView setFrame:CGRectOffset([adView frame], 0,
                                             -[self getBannerHeight])];
        [adView setDelegate:self];

        [self.view addSubview:adView];        
    }
}

- (void)fixupAdView:(UIInterfaceOrientation)toInterfaceOrientation
{
    if (adView != nil) {
        if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
            [adView setCurrentContentSizeIdentifier:
             ADBannerContentSizeIdentifier480x32];
        } else {
            [adView setCurrentContentSizeIdentifier:
             ADBannerContentSizeIdentifier320x50];
        }
        [UIView beginAnimations:@"fixupViews" context:nil];
        if (bannerIsVisible) {
            CGRect adBannerViewFrame = [adView frame];
            adBannerViewFrame.origin.x = 0;
            adBannerViewFrame.origin.y = 0;
            [adView setFrame:adBannerViewFrame];
            CGRect contentViewFrame = _contentView.frame;
            contentViewFrame.origin.y =
            [self getBannerHeight:toInterfaceOrientation];
            contentViewFrame.size.height = self.view.frame.size.height -
            [self getBannerHeight:toInterfaceOrientation];
            _contentView.frame = contentViewFrame;
        } else {
            CGRect adBannerViewFrame = [adView frame];
            adBannerViewFrame.origin.x = 0;
            adBannerViewFrame.origin.y =
            -[self getBannerHeight:toInterfaceOrientation];
            [adView setFrame:adBannerViewFrame];
            CGRect contentViewFrame = _contentView.frame;
            contentViewFrame.origin.y = 0;
            contentViewFrame.size.height = self.view.frame.size.height;
            _contentView.frame = contentViewFrame;
        }
        [UIView commitAnimations];
    }
}
4

1 に答える 1

8

非推奨のメソッド/シンボルを使用しています。

非推奨とは、メソッド/シンボルがまだここにあり、通常は引き続き機能することを意味しますが、将来のiOSバージョンでは削除される可能性があります。

公式ドキュメントには、常に非推奨のメソッド/シンボルがリストされており、通常は新しいものが提供されています。

だから私は答えとしてこれを言うのは嫌いですが、ただドキュメントを読んでください

iOS 6はかなり新しいので、iOS6に関する警告はそれほど悪くはありません。
ただし、可能であれば修正も行ってください。行われることは行われます。

ただし、iOS4.2で非推奨になったメソッド/シンボルも使用しているようです。
これは実際には懸念事項です。iOS 4のサポートは現在終了しているため、実際のコードは長く機能しない可能性があります。

したがって、(もう一度)ドキュメントを読み、新しいメソッドについて学び、コードを修正してください。

例えば:

ADBannerContentSizeIdentifier320x50 - deprecated in iOS 4.2

ドキュメントでは、次のことを読むことができます。

ADBannerContentSizeIdentifier320x50バナービューのサイズが320ポイント×50ポイントであることを示します。このサイズは、iPhoneでポートレート広告に使用されます。(非推奨。代わりにADBannerContentSizeIdentifierPortraitを使用してください。)iOS4.0以降で使用できます。iOS4.2では非推奨です。ADBannerView_Deprecated.hで宣言されています。

したがって、の代わりにADBannerContentSizeIdentifier320x50、単に。を使用しますADBannerContentSizeIdentifierPortrait
についても同じですADBannerContentSizeIdentifier480x32ADBannerContentSizeIdentifierLandscape代わりに使用してください。

そうすれば安全になり、これについての警告はもうありません。

次に、他のシンボルについても同じようにします。

編集


コメントに記載されているように、ADBannerContentSizeIdentifierPortraitiOS6ADBannerContentSizeIdentifierLandscapeでも非推奨です。

setCurrentContentSizeIdentifierこれは、およびの非推奨に関連していsetRequiredContentSizeIdentifiersます。

Appleは、そのアプローチをもう使用せず、iOSの自動サイズ変更機能を使用することをお勧めします。

于 2012-10-02T20:26:19.617 に答える