升级到 iOS 7 和 Xcode 5 - UIAccelerator、UIStringDrawing 和 NSObject 出现问题

Posted

技术标签:

【中文标题】升级到 iOS 7 和 Xcode 5 - UIAccelerator、UIStringDrawing 和 NSObject 出现问题【英文标题】:upgrading to iOS 7 and Xcode 5 - having issues with UIAccelerator, UIStringDrawing and NSObject 【发布时间】:2013-09-19 21:00:02 【问题描述】:

我将我的 iPad 更新到 ios 7,并发现我使用了一年多的 Enterprise 应用程序崩溃了。好的,没问题,我看看 Xcode 哪里崩溃了。

好的,问题:我必须升级到 Xcode 5 才能调试 iOS 7。好的,没问题,我会升级到 Xcode 5。

好的,问题:Xcode 5 中的源代码现在显示 19 个错误:一个在 NSObject.h,三个在 UIStringDrawing.h,其余在 UIAccelerometer.h。

而且,作为奖励,它在底部添加了一个,“发出的错误太多,现在停止。”这并不是那么令人欣慰。

我确实在互联网上搜索了答案,但我一定是使用了错误的搜索词,因为我找不到任何可以解决这个问题的东西。当然,我不是唯一一个。

我想,我已经开发 iOS 应用程序快两年了,但当涉及到一些细节问题时,我仍然很愚蠢。我通常只是点击“运行”并希望它有效。到目前为止,这是一个非常有效的策略,但现在我被难住了。

谁能告诉我我做错了什么?除了显而易见的,我应该把一切都放在一边。

我还必须更新我以前的应用程序,因为它也存在 iOS 7 问题,但我什至连想都不敢想。

感谢任何人提供的任何帮助。

【问题讨论】:

在您的 iPad 上崩溃的应用程序版本是使用 iOS 6 SDK 还是 iOS 7 SDK 构建的?如果您使用 iOS 6 SDK 构建并将该版本的应用程序安装到您的 iOS 7 设备上(我目前知道如何做到这一点的唯一方法是通过 TestFlight - Xcode 4 不会将内容推送到 iOS 7 设备和公平之后在 iOS 6 设备或模拟器上运行时,我无法让 Xcode 5 使用 iOS 6 SDK 构建)然后应用程序应该在 iOS 6 兼容模式下运行,并且其行为与在 iOS 6 设备上的行为非常相似。但是,如果您使用 Xcode 5 构建,则行为会发生变化。 基本上,如果您只是在使用 Xcode 5 构建时目睹了崩溃,那么您可能根本无需担心。 此应用程序仅针对使用 iPhone 的现场工作人员开发,不一定适用于 iPad。由于我没有将我的 iPhone 更新到 iOS 7,我设法删除了 Xcode 5 并重新安装了 4.6.whatever,所以现在我重新开始使用 xcode 5 / iOS 7 之前的应用程序。但是,迟早我会有移动到 iOS 7 和 Xcode 5,所以在某些时候将不得不再次面对这种情况。我希望到时候能解决。谢谢马克,鼓励。两个反对票似乎被两个赞成票抵消了......假设它是这样工作的。 【参考方案1】:

我在这里找到了答案:http://blog.spacemanlabs.com/2013/09/how-to-support-old-ios-sdks-in-xcode-5/#comment-1056917662

在弄清楚如何执行所有这些操作后,该应用显示了更多与原始问题无关的错误。原来我为自动布局设置了几个 XIB。那些被禁用的应用程序在我的装有 Xcode 5 的 iOS 6 手机上运行良好。

【讨论】:

@Shady,是的,它在 iOS 7 上运行良好。我需要做的唯一更改是更新 UIButtons,使它们看起来像按钮。这需要创建一个按钮图像并将其附加为按钮的背景图像。非按钮按钮太模糊;它们需要看起来像按钮。【参考方案2】:

很高兴您能够切换回 iOS 6 SDK。我在UIAccelerometer.hNSObject.h 中遇到了同样的错误,但我想坚持使用 iOS 7 SDK。

对我来说,这些错误是我的项目文件夹中 UIKit.frameworkFoundation.framework(以及其他几个框架)的杂散副本的结果。这些被链接器看到,因此抛出“重复符号”错误消息。一旦我摆脱了项目文件夹中的框架并重新链接到“构建阶段”->“将二进制文件与库链接”中的框架,一切都构建了。

【讨论】:

我按照您的指示删除并重新链接了 UIKit.framework 和 Foundation.Framework。这样做让我回到了最初的问题,我有超过 19 个错误。偶然我删除了 Foundation.framework 而没有重新链接它,它编译得很好,并且在 64 位架构的 iOS7 上正常运行。我在项目文件夹中没有看到 Foundation.framework 的另一个副本,并且它不在“Link Binary with Libraries”列表中。然而,该应用程序运行良好。对于像我这样的新手来说,这有点令人困惑。有什么想法吗? 项目文件夹中是否还有其他“*.framework”文件?

以上是关于升级到 iOS 7 和 Xcode 5 - UIAccelerator、UIStringDrawing 和 NSObject 出现问题的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 7 警告!是为比被链接 (5.1) 更新的 iOS 版本 (5.1.1) 构建的

手动升级到 xcode iOS 7 布局?

升级到 Xcode 4.2/iOS 5 后,类别中的方法引发异常

如何在 Xcode 7 Beta 5 中安装 iOS 7 及更高版本的模拟器?

iPhone 升级到 iOS 8.4 后在 Xcode 7 beta2 中成为不合格设备

iOS - Xcode升级到5.1& iOS升级到iOS7.1问题:Undefined symbols for architecture x86_64