我在商店有一个应用程序,它是为3.1.2构建的,但在4.0GM下崩溃了。我已经使用Xcode 3.2.3解决了崩溃问题,但也收到警告说这样的类没有实现NSXMLParserDelegate。我添加到标题,一切似乎都很好。我现在已经提交了应用程序,它正在等待审核。这个最新版本使用4.0的基本SDK编译,部署目标为3.1.2。
我遇到的问题是,今天早上我在Xcode 3.2.2中打开了项目,当构建基于3.1.2的基础SDK时,我收到编译错误,说NSXMLParserDelegate不存在。这是否意味着我的等待审核的应用程序将在3.1.2设备下崩溃?这很奇怪,因为我的beta测试者使用的是3.1.3而我认为3.1.2,该应用程序运行正常。如果无法针对3.1.2的基础SDK进行编译,它不应该崩溃吗?
我认为关于4.0 NDA可以讨论,因为我的问题是3.1.X特有的。
答案 0 :(得分:4)
首先,本周NDA已经解除,所以讨论iOS 4.0 SDK没问题。
至于你的问题:编译和运行应用程序之间存在差异。
iOS4 SDK中添加了NSXMLParserDelegate协议。在以前版本的SDK中,XML解析器委托方法在类别中声明。在iOS4中,这些方法已经转移到专用协议,这使它变得更加清洁。在运行时,没有区别。编译完成后,应用程序对协议或类别一无所知。 NSXMLParser只会检查是否实现了特定的委托方法(通过 respondsToSelctor ),因此它运行得很好。
一般来说,使用iOS4 SDK构建并在3.0上运行不是问题。您必须确保不要调用3.0中不存在的任何方法。通过调用 respondsToSelector 可以很容易地做到这一点。它允许您创建在所有操作系统版本上运行的单个应用程序,但仍允许您调用特定于4.0的方法。
我希望这是有道理的......