是否必须为viewWillAppear提供[super viewWillAppear]方法

Jet*_*Jet 3 xcode analyzer appstore-approval viewwillappear ios

我在iAd/AdMob广告中放置了我的代码...

-(void)viewWillAppear:(BOOL)animated{}
Run Code Online (Sandbox Code Playgroud)

广告的工作方式非常好,就像我现在在所有iOS设备上使用它们一样.当我将我的iPhone连接到Xcode并点击Product -->Analyze消息时...

子类'iPhoneSIX'中的viewWillAppear:实例方法UIViewController缺少一个[super viewWillAppear:]调用

我偶然偶然发现了这Product-->Analyze件事.[super viewWillAppear]即使所有设备上的所有设备都能正常运行,我是否真的需要添加.如果我不注意Product-->Analyze问题导航器,Apple会拒绝我的应用吗?

还有,......

[super viewWillAppear:YES];
Run Code Online (Sandbox Code Playgroud)

这叫做什么呢?

j.f*_*.f. 11

根据Apple的说法:(强调我的)

在将接收者的视图添加到视图层次结构之前以及在配置任何动画以显示视图之前调用此方法.您可以覆盖此方法以执行与显示视图相关联的自定义任务.例如,您可以使用此方法更改状态栏的方向或样式,以与所显示视图的方向或样式进行协调. 如果重写此方法,则必须在实现中的某个时刻调用super.


Jos*_*fni 7

在决定接受或拒绝您的应用时,Apple没有具体说明.它只遵循指导原则,而这些指导方针并没有在特定方法的杂草中得到那么多.

通话[super viewWillAppear:YES]是最佳做法,我会推荐它.始终包含super确保在执行任何其他代码之前调用超类中的任何代码.因此,如果您或其他人编写了一个期望执行某些代码的超类,那么您仍然可以执行它,而不是仅仅覆盖子类中的整个方法.

假设您有一个类型的视图控制器,MyViewController它是一个子类UIViewController.然后说你有另一个类型的视图控制器MyOtherViewController,它是一个子类MyViewController.说你现在在编码一些事情viewWillAppearMyOtherViewController.如果你先调用super,它会viewWillAppearMyViewController执行任何代码之前调用.如果viewWillAppearMyViewController调用中超第一,那么它会调用viewWillAppearUIViewController执行任何代码之前.