Ios VIEWWILLEXEEN也必须有[super VIEWWILLEXEEN]方法吗
我把我的iAd/AdMob广告代码放在Ios VIEWWILLEXEEN也必须有[super VIEWWILLEXEEN]方法吗,ios,xcode,appstore-approval,analyzer,viewwillappear,Ios,Xcode,Appstore Approval,Analyzer,Viewwillappear,我把我的iAd/AdMob广告代码放在 -(void)viewWillAppear:(BOOL)animated{} 广告工作得非常好,就像我现在在所有iOS设备上看到的那样。 当我将iPhone连接到Xcode并单击Product-->Analyze时,一条消息显示 UIViewController子类“iPhoneSIX”中的viewwillbeen:实例方法缺少[super-viewwillbeen:][/code>调用 我只是偶然发现了这个产品-->分析的东西。我真的需要添加[supe
-(void)viewWillAppear:(BOOL)animated{}
广告工作得非常好,就像我现在在所有iOS设备上看到的那样。
当我将iPhone连接到Xcode并单击Product-->Analyze
时,一条消息显示
UIViewController
子类“iPhoneSIX”中的viewwillbeen:
实例方法缺少[super-viewwillbeen:][/code>调用
我只是偶然发现了这个产品-->分析的东西。我真的需要添加[super view willbeen]
吗?即使所有设备上的一切都像现在这样运行良好。如果我不注意产品-->Analyze
问题导航器,苹果会拒绝我的应用程序吗
还有,什么是
[super viewWillAppear:YES];
这叫什么 苹果在决定接受或拒绝你的应用程序时没有那么明确。它只遵循指导原则,而不是你的具体方法
调用[超级视图将显示:是]
是一种最佳做法,我建议这样做。始终包含super可确保在执行任何附加代码之前调用super类中的任何代码。因此,如果您或其他人编写了一个期望执行某些代码的超类,那么可以保证您仍然会执行它,而不仅仅是覆盖子类中的整个方法
假设您有一个类型为MyViewController
的视图控制器,它是UIViewController
的子类。然后假设您有另一个类型为MyOtherViewController
的视图控制器,它是MyViewController
的子类。假设您现在正在编写视图中的某些内容将出现在MyOtherViewController
中。如果您先调用super,它将在执行任何代码之前在MyViewController
中调用view。如果MyViewController
中的viewwillbeen
首先调用super,则在执行任何代码之前,它将在UIViewController
中调用viewwillbeen
根据:(强调矿山)
此方法在接收器的视图即将显示之前调用
添加到视图层次结构中,然后再为其配置任何动画
显示视图。您可以重写此方法以执行自定义任务
与显示视图关联。例如,您可以使用
方法将状态栏的方向或样式更改为
与显示的视图的方向或样式相协调。
如果重写此方法,则必须在应用程序中的某个点调用super
实施。
我很确定苹果不会因为你的应用程序未能通过覆盖方法调用super
,而拒绝你的应用程序,主要是因为在某些情况下,你可能特别想避免调用super
也就是说,正如Josh Gafni提到的,这样做绝对是一种最佳实践,除非你有很好的理由不这样做。还要记住,某些视图控制器子类(无法回忆起具体是哪些类,但可能UICollectionViewController
)只有在适当调用其视图生命周期方法时才能正常工作,因此不调用super
肯定会破坏某些类(有时可能以您可能没有意识到的微妙方式)
因此,我的建议是将调用添加到super
(通常作为方法中的第一行),然后看看事情是否继续正常工作。如果没有,花一点时间试着理解发生了什么不同,看看你是否能以不同的方式解决它。通常,您应该始终(习惯性地)尽可能在覆盖的任何视图生命周期方法上提供对super
的调用。您应该尽可能将传递的参数传递给覆盖的方法,而不是像YES
这样的具体值,除非你有非常有意的理由这么做<代码>[超级视图将显示:动画]
因此是最佳做法。