Себастьян, я надеюсь, что вы отошли от этого, так как вопрос оставался без ответа в течение стольких месяцев.Недавно я добавил поддержку iAd и нашел это предупреждение довольно раздражающим.Одна из тонкостей совместного использования рекламного баннера заключается в том, что если вы хотите показать его в своем первоначальном контроллере представления, вам придется выполнить большую часть настроек в этом контроллере представления, а не в делегате приложения.
Это viewWillAppear: метод в моем начальном контроллере представления:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (!SharedAdBannerView) {
// in my app, the ad banner is the bottom-most thing on screen
CGRect startingFrame = CGRectMake(0.0, self.view.frame.origin.y + self.view.frame.size.height, 320.0, 50.0);
adBanner = [[ADBannerView alloc] initWithFrame:startingFrame];
// Set the autoresizing mask so that the banner is pinned to the bottom
adBanner.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin;
// Since we support all orientations, support portrait and landscape content sizes.
// If you only supported landscape or portrait, you could remove the other from this set
adBanner.requiredContentSizeIdentifiers = [NSSet setWithObjects:ADBannerContentSizeIdentifierPortrait, nil];
adBanner.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
adBanner.delegate = self;
[self.view addSubview:adBanner];
SharedAdBannerView = adBanner;
} else {
adBanner = SharedAdBannerView;
}
SharedAdBannerView - это макрос, как определено в TN2286, и он использует переменную экземпляра, определенную в делегате приложения (таким образом, он остается общим для всех видов, отображающих iAd).Я также решил анимировать рекламный баннер за пределами экрана, прежде чем удалять его из иерархии представления, поскольку одна сцена переходила к другой.Я прочитал документацию, в которой говорилось, что всякий раз, когда рекламный баннер является частью иерархии представлений, вы получите это сообщение - другими словами, скрытие представления баннера не способ предотвратить появление предупреждающего сообщения.Или, иначе говоря, если этого достаточно, чтобы скрыть рекламный баннер, он не сработал для меня и не помог в устранении неполадок.Я многому научился, когда наткнулся на TN2239, который предлагал этот совет в gdb:
po [[self view] recursiveDescription];
Вы должны настроить объект, которому вы отправляете сообщение recursiveDescription, в зависимости от того, где вы разместили свою точку останова, но, вероятно, [selfвид] в порядке.