Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios VIEWWILLEXEEN也必须有[super VIEWWILLEXEEN]方法吗_Ios_Xcode_Appstore Approval_Analyzer_Viewwillappear - Fatal编程技术网

Ios VIEWWILLEXEEN也必须有[super VIEWWILLEXEEN]方法吗

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

我把我的iAd/AdMob广告代码放在

-(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
这样的具体值,除非你有非常有意的理由这么做<代码>[超级视图将显示:动画]
因此是最佳做法。