2013-01-19 35 views
0

以下代码不起作用,但它仍然令我感到沮丧,因为在else块中,不建议使用的方法调用会导致警告。如何在没有警告的情况下解决iOS中的单独问题?

if ([self.navigationController respondsToSelector:@selector(dismissViewControllerAnimated:completion:)]) 
{ 
    [self.navigationController dismissViewControllerAnimated:YES completion:nil]; 
} 
else 
{ 
    //Here,the warning goes! 
    //dismissModalViewControllerAnimated is deprecated 
    [self.navigationController dismissModalViewControllerAnimated:YES]; 
} 

如何隐藏警告解除,或有任何其他方式来解决问题?

回答

4

,可以暂时禁用废弃警告周围的代码行中的问题:

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wdeprecated-declarations" 

[self.navigationController dismissModalViewControllerAnimated:YES]; 

#pragma clang diagnostic pop 
0

我看不出有任何理由保留两个dismissViewControllerAnimated & dismissModalViewControllerAnimated。您会因为dismissModalViewControllerAnimated而收到警告,因为您的项目的部署目标是6.0,而在iOS 6 SDK中不推荐dismissModalViewControllerAnimated。

  1. 如果您希望您的应用支持iOS 6.0以下版本,请将部署目标更改为6.0以下(例如5.0),并仅使用dismissModalViewControllerAnimated撤销模式。
  2. 如果您希望自己的应用程序支持iOS 6.0+,那么请将部署目标保留为6.0,并仅使用dismissViewControllerAnimated取消所提供的控制器。
+0

谢谢。但我希望我的应用程序支持iOS 4.3以上,包括iOS 6.0在内。不仅适用于iOS 6.0以下或iOS 6.0以上的iOS。 –

+0

但是,即使部署目标低于6.0,我认为dismissModalViewControllerAnimated可以在iOS 6.0中工作 –

相关问题