iOS版本检查发出警告

时间:2013-03-06 15:54:51

标签: iphone ios objective-c respondstoselector

在我的应用程序中,我需要提供一个视图控制器。用于呈现视图控制器的6.0方法是presentViewController:animated:completion:。我也想支持4.3。在4.3中,要调用的方法是presentModalViewController:animated:。所以我使用respondsToSelector:来确定该方法是否受支持。但是当我为6.0编译应用程序时,它会发出警告消息

  

presentModalViewController:animated:不推荐使用:首先在iOS 6.0中弃用

任何人都可以知道如何摆脱这个警告。我也没有4.3设备来测试它是否有效。我需要假设我编写的代码应该适用于4.3。

  if([myViewController respondsToSelector:@selector(presentModalViewController:animated:)]){
      [myViewController presentModalViewController:anotherViewController animated:YES];
  }else{
      [myViewController presentViewController:anotherViewController animated:YES completion:nil];
  }

3 个答案:

答案 0 :(得分:3)

你可以对respondsToSelector进行相反的检查,这可能有所帮助,如果你支持旧版本,这就是实际的方法:)

if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]){
    [self presentViewController:anotherViewController animated:YES completion:nil];
} else {
    [self presentModalViewController:anotherViewController animated:YES];
}

答案 1 :(得分:1)

您可以在代码中使用pragma启用/禁用警告,但它们使用起来不是很友好。而且我不记得这种警告的具体实用。但是这里的一些人会告诉你。

顺便说一句,你可以使用简单的

[id performSelector:<#(SEL)#> withObject:<#(id)#>]

会做的伎俩

答案 2 :(得分:0)

我错误地将部署目标设置为6.0。所以它显示了上面提到的警告信息。将部署目标更改为4.3(我需要支持)后没有警告消息。谢谢你的回答!