Tag: 向后兼容

WatchKit应用程序/扩展和iOS向后兼容

我有一个iOS应用程序,其部署目标设置为iOS 6.1版本,基本SDK最新iOS。 我已经将Watchkit应用程序和WatchKit扩展目标添加到项目中,但是我需要了解这将如何影响将来提交到App Store: 1)是否生成两个可执行文件? 一个用于iOS应用程序+ WatchKit扩展,另一个用于WatchKit应用程序? 或者全部打包在一个唯一的可执行文件中? 2)它会自动处理安装该应用程序的设备的iOS版本? 我的意思是:用户是否会下载并从App Store安装更新,然后她将被要求只安装iOS应用程序,如果她的版本是8.1,并且要求安装iOS应用程序和WatchKit应用程序(如果她有iOS的话) 8.2+和一个配对的Apple Watch? 苹果是否提供了这些信息?

如何创build一个新的与iOS 5.0向后兼容的Xcode 5项目? – 缺less故事板错误

我们的客户需要一个涵盖iOS 5.0 – iOS 7.0的iPad / iPhone应用程序。 我在Xcode 5中创build了一个新项目 在构build设置中,我将体系结构更改为标准的armv7 , armv7s 我点击了Main.storyboard,并确保界面生成器设置为:打开:默认(5.0)版本为iOS 5和更高版本查看为:iOS 6.1和更早版本 在部署信息中,我将部署目标更改为5.0 我现在可以看到我的旧模拟器,但在iOS 5.0模拟器中运行一个空的单个应用程序项目给了我这个缺less的许多报道的故事板错误: 由于未捕获exception“ NSInvalidArgumentException ”而终止应用程序,原因:'在捆绑NSBundle中找不到名为'Main'的故事板 我可以在“ Copy Bundle Resources ”中看到一个红色的“缺失” 故事板 – 这里没有任何解决scheme,例如deleting/re-adding/clean/compile 。 我注意到,单击Interface Builder上的“本地化 – 英语”框会使红色文件看起来很正常,但是当我运行模拟器时仍然会出现这个缺失的错误。 我在想,唯一的办法就是在Xcode 4中用iOS 5兼容的代码创build一个项目,然后在iOS 7.0中testing并修改它。 有什么想法吗?

自定义解除争议iOS 8和iOS 9

我的问题是,我如何获得以下自定义展开segue在iOS 9之前版本的设备以及运行iOS 9的设备上工作? 我有一个自定义Segue显示一个视图控制器,然后有一个相应的自定义解绕Segue。 此代码在iOS 8中运行良好,并通过创buildUIStoryboardSegue的子类和实现perform方法来实现。 然后我重写我的自定义导航控制器中的以下方法: – (UIStoryboardSegue *) segueForUnwindingToViewController: (UIViewController *)toViewController fromViewController:(UIViewController *)fromViewController identifier:(NSString *)identifier { UIStoryboardSegue *segue; if([fromViewController isKindOfClass:[MyViewController class]]){ segue = [[CustomSegue alloc] initWithIdentifier:identifier source:fromViewController destination:toViewController]; //Custom Unwind Segue } else{ UIStoryboardSegue *unwindSegue = [super segueForUnwindingToViewController:toViewController fromViewController:fromViewController identifier:identifier]; //Normal Unwind Segue segue = unwindSegue; } return segue; } 在iOS 9中,不推荐使用segueForUnwindingToViewController 。 […]

用SDK 4.2开发的iPhone应用程序,需要与iOS 3.1.3向后兼容。

我已经用SDK 4.2构build了一个iPhone应用程序,但是我也知道要使它与iOS 3.1.3兼容。 第一步是将部署目标设置为3.1.3。 它运行良好的3.2模拟器,但应用程序崩溃有时,因为我使用了一些在这个早期的SDK中不可用的方法。 所以我的问题是,有没有一种简单的方法来find我在项目中使用的,在3.1.3中不可用的有问题的方法/类? (无需手动进行每个方法调用,并查阅有关SDK可用性的文档) 谢谢。 更新:我已经执行3.1.3的应用程序,并试图手动testing每个执行path,希望find所有exception。 这一切都取得了一定的成功。 但是,如果应用程序是巨大的呢? 有很多的执行path? 这个场景必须有一些工具。 任何想法都非常感激。

可以在iOS 7和iOS 8上运行的警报

我得到的dyld:符号未find:_OBJC_CLASS _ $ _ UIAlertAction当我试图让这个怪物运行。 如何弱链接8.0的东西? var device : UIDevice = UIDevice.currentDevice()!; var systemVersion = device.systemVersion; var iosVerion : Float = systemVersion.bridgeToObjectiveC().floatValue; if(iosVerion < 8.0) { let alert = UIAlertView() alert.title = "Noop" alert.message = "Nothing to verify" alert.addButtonWithTitle("Click") alert.show() } else { var alert : UIAlertController? = UIAlertController(title: "Noop", message: "Nothing to verify", preferredStyle: […]

有没有办法在Xcode中安装旧的iOS SDK?

我想确保一些向后兼容性为我的应用程序编译使用旧的SDK来testing更新的类和方法。 但是,Xcode仅适用于最新iOS版本的SDK。 我已经下载并安装了iOS 3.1.3 SDK( 使用这里描述的方法 )并且工作正常。 我的代码已满(不太满:-))__IPHONE_OS_VERSION_MAX_ALLOWED,__IPHONE_OS_VERSION_MIN_REQUIRED和这样的respondsToSelector。 这适用于iOS 3.1.3 SDK,但是如果将来我想用4.0 SDK重复这个过程呢? 是否有在最新的Xcode中安装较旧的SDK版本的一般stream程?

替代iPhone SDK中的弱链接?

我正在寻找使我的应用程序与旧版本的iPhone OS兼容。 我确实看到了弱链接作为一个选项。 我可以使用操作系统版本检测代码来避免操作系统无法处理的代码块吗? (说iAD?) if(OS >= 4.0){ //set up iADs using "NDA code"… } 如果是的话, if(OS >= 4.0)什么?