我们有一个标签繁重的应用程序,它有 5 个标签可以来回使用。我们有 iAd 和 admobs(作为没有 iAd 的国家/地区的备份),我们在 viewDidLoad 中“调用”广告。在 viewDidAppear 中调用它们会有所不同吗?然后在 viewDidDisappear 中删除它们或为了不搞砸框架等?这会给人更多的印象等吗?
3 回答
viewDidLoad:
viewDidLoad 在控制器的视图加载到内存后调用。
- (void)viewDidLoad
讨论 在视图控制器将其视图层次结构加载到内存后调用此方法。无论视图层次结构是从 nib 文件加载还是在 loadView 方法中以编程方式创建,都会调用此方法。您通常覆盖此方法以对从 nib 文件加载的视图执行额外的初始化。
viewDidAppear:
viewDidAppear:通知视图控制器其视图已添加到视图层次结构中。
- (void)viewDidAppear:(BOOL)animated
参数动画 如果是,则使用动画将视图添加到窗口。讨论 您可以覆盖此方法以执行与呈现视图相关的其他任务。如果你重写了这个方法,你必须在你的实现中调用 super 。
接听
所以 viewDidLoad 的调用比 viewDidAppear: 稍早一些,唯一的区别是当 viewDidAppear: 视图已经绘制完毕,而在 viewDidLoad 中视图仍然需要绘制。
所以回答你的问题:
在 viewDidAppear 中调用它们会有所不同吗?
如果调用广告是一个缓慢的操作,那么您首先会看到以它的颜色显示的视图,然后在几个时间间隔后看到广告。但这必须太慢才能产生真正的影响。
然后在 viewDidDisappear 中删除它们或为了不搞砸框架等?
它不会“搞砸框架”,这是肯定的。
你只需要在 viewDidLoad 中调用它
Putting your ad code in viewDidAppear: (and removing it in viewDidDisappear:) will certainly give you more impressions, but unless you're a whitelisted pub, you're probably getting paid on a cost per click basis anyway (AdMob Help Center article).
In this case, instead of having the overhead of creating and destroying GADBannerView objects on tab changes, you might as well create a singleton GADBannerView that you use throughout your TabbedController (look at an example here).