Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Objective c 将应用程序从IOS4升级到IOS5_Objective C_Ios4_Ios5 - Fatal编程技术网

Objective c 将应用程序从IOS4升级到IOS5

Objective c 将应用程序从IOS4升级到IOS5,objective-c,ios4,ios5,Objective C,Ios4,Ios5,我有一个IOS5应用程序,它使用以下功能 [self.presentingViewController dismissModalViewControllerAnimated:YES]; 谁在IOS4上工作得很好,但突然我发现IOS5上不存在这个函数,所以我不得不使用另一个等效函数 [self.parentViewController dismissModalViewControllerAnimated:YES] 现在我遇到了以下问题:IOS4用户无法安装我的应用程序,因为IOS4中不存在此

我有一个IOS5应用程序,它使用以下功能

[self.presentingViewController dismissModalViewControllerAnimated:YES]; 
谁在IOS4上工作得很好,但突然我发现IOS5上不存在这个函数,所以我不得不使用另一个等效函数

[self.parentViewController dismissModalViewControllerAnimated:YES]
现在我遇到了以下问题:IOS4用户无法安装我的应用程序,因为IOS4中不存在此功能,更糟糕的是,该应用程序可在苹果的应用商店中使用,但仅适用于IOS5用户。另一个相关问题是,该应用程序突然停止在配备Wifi的iPad上运行,而连接到3G网络的iPad运行正常

在编译这个新版本的应用程序时,我是否错过了什么

提前谢谢

按以下方式编码:

if ([self respondsToSelector:@selector(parentViewController)])
    [self.parentViewController ...];
else
    [self.presentingViewController ...];
(未编译、未测试等)

关键是,您可以(也应该)测试功能,然后采取相应的行动。在这种情况下,如果iOS5方法可用,请使用该方法。如果不是,请使用旧的,这也意味着它是iOS5之前的设备。

请按以下方式编码:

if ([self respondsToSelector:@selector(parentViewController)])
    [self.parentViewController ...];
else
    [self.presentingViewController ...];
(未编译、未测试等)


关键是,您可以(也应该)测试功能,然后采取相应的行动。在这种情况下,如果iOS5方法可用,请使用该方法。如果没有,请使用旧设备,这也意味着它是iOS5之前的设备。

您可以检查是否存在如下属性:

if([self respondsToSelector:@selector(presentingViewController)])
    [self.presentingViewController dismissModalViewControllerAnimated:YES];
else
    [self.parentViewController dismissModalViewControllerAnimated:YES];

您可以检查属性是否存在,如下所示:

if([self respondsToSelector:@selector(presentingViewController)])
    [self.presentingViewController dismissModalViewControllerAnimated:YES];
else
    [self.parentViewController dismissModalViewControllerAnimated:YES];

要走的路有两条:

  • 根据最新的SDK版本编译应用程序,同时将部署目标设置为您想要支持的最旧版本;这将确保应用程序在应用程序商店中正确列出

  • 在使用任何仅在更高版本上可用的方法/功能之前进行检查;这将确保您的应用程序不会崩溃,并且可以通过条件编译的方式完成,例如:

  • k


    如果你必须在很多地方这样做,这是相当复杂的。您可以通过查看了解如何改进该示例。

    方法有两个:

  • 根据最新的SDK版本编译应用程序,同时将部署目标设置为您想要支持的最旧版本;这将确保应用程序在应用程序商店中正确列出

  • 在使用任何仅在更高版本上可用的方法/功能之前进行检查;这将确保您的应用程序不会崩溃,并且可以通过条件编译的方式完成,例如:

  • k


    如果你必须在很多地方这样做,这是相当复杂的。您可以看一看,了解如何改进该示例。

    我构建了一个类别,在iOS 4上添加了
    presentingViewController
    。 (它在iOS 5上禁用自身。)

    它无缝地工作;只包含2个文件

    请看


    我希望这对你和我都有好处;它使你的代码更干净

    我建立了一个类别,在iOS 4上添加了
    presentingViewController
    。 (它在iOS 5上禁用自身。)

    它无缝地工作;只包含2个文件

    请看


    我希望这对你和我都有好处;它使你的代码更干净

    UIViewController自iOS 2.0以来一直存在。你确定这是你的应用程序中丢失或损坏的内容吗?您是否有编译错误、链接错误或其他问题?@MichaelDautermann:区别在于,自iOS 2.0以来,就存在thatUIViewController的接收器。你确定这是你的应用程序中丢失或损坏的内容吗?你是否有编译错误、链接错误或其他问题?@MichaelDautermann:区别在于它的接收者