我把我的iAd/AdMob广告代码放在..。
-(void)viewWillAppear:(BOOL)animated{}广告的工作方式非常好,就像我现在在所有iOS设备上一样。当我将iPhone连接到Xcode并单击Product -->Analyze上的消息状态时.
viewWillAppear:子类“iPhoneSIX”中的UIViewController实例方法缺少[super viewWillAppear:]调用
我只是偶然发现了这个Product-->Analyze的东西。我真的需要添加[super viewWillAppear]吗?即使在所有设备上都能很好地工作,就像现在一样。如果我不注意Product-->Analyze问题导航器,苹果会拒绝我的应用程序吗?
还有什么能..。
[super viewWillAppear:YES];这叫什么?
发布于 2015-05-14 17:56:09
苹果在决定接受或拒绝你的应用程序时,并没有做到这一点。它只遵循指导方针,它不会深入到特定方法的杂草中去。
调用[super viewWillAppear:YES]是一种最佳实践,我建议您这样做。始终包含Super会确保在执行任何附加代码之前调用超类中的任何代码。因此,如果您或其他人编写了一个超类,期望执行某些代码,则保证仍然执行它,而不只是覆盖子类中的整个方法。
假设您有一个MyViewController类型的视图控制器,它是UIViewController的一个子类。然后假设您有另一个MyOtherViewController类型的视图控制器,它是MyViewController的一个子类。假设您现在正在用viewWillAppear在MyOtherViewController中编码一些东西。如果您先调用super,那么在执行任何代码之前,它将在viewWillAppear中调用MyViewController。如果viewWillAppear在MyViewController中首先调用super,那么它将在执行任何代码之前在UIViewController中调用viewWillAppear。
发布于 2015-05-14 17:56:46
根据苹果:(强调地雷)
在将接收方的视图添加到视图层次结构之前,以及在配置用于显示视图的任何动画之前,将调用此方法。可以重写此方法以执行与显示视图相关的自定义任务。例如,可以使用此方法更改状态栏的方向或样式,以与所呈现的视图的方向或样式进行协调。如果覆盖此方法,则必须在实现中的某个点调用超级。。
发布于 2015-09-21 17:40:08
我很肯定苹果不会因为你的应用程序没有在覆盖的方法上调用super而拒绝你的应用,这主要是因为在某些情况下,你可能特别希望避免调用super。
尽管如此,正如乔希·加夫尼( Josh Gafni )提到的那样,这样做肯定是最好的做法,除非你有一个很好的理由不这么做。还请记住,某些视图控制器子类(不能特别记住哪些子类,但可能是UICollectionViewController)只有在它们的视图生命周期方法被适当调用时才能正常工作,因此不调用super肯定会破坏某些类(有时以您可能没有意识到的微妙方式)。
因此,我的建议是添加对super的调用(通常作为方法的第一行),并查看事情是否继续正常工作。如果不是,花点时间去了解不同的事情,看看你是否能用不同的方式解决它。通常,在任何可能的情况下,您都应该(作为习惯的一种力量)在任何视图生命周期方法上提供对super的调用。
https://stackoverflow.com/questions/30243903
复制相似问题