过渡到iOS 5时要注意什么?

简介: 您可以添加到我的清单的事情要注意的时候迁移到iOS 5? 在我升级到iOS 5的时候,StackOverflow是非常宝贵的。我发现了一些我在Xcode 4.2之前错过的非常基本的东西,而且我想知道还有哪些潜在的“陷阱”。

细节:本周iOS 5发布,我不得不对一些我的应用程序进行一些更改。 由于新的ARC特性,Xcode 4.2在分析内存pipe理代码方面做得更好。 iOS 5更新是查看所有内存pipe理代码的好地方。 新编译器还发现了一些早期编译器错过的其他问题。 向苹果编译器工程师致敬。 以下是主要的帮助(其中许多也将适用于早期版本的iOS)。

  1. 确保在dealloc方法的END处调用[super dealloc] ,而不是开始。
  2. 在viewDidUnload中, 有些人已经报告了需要在你的viewDidUnload 的最后而不是开始处调用[super viewDidUnload]的错误 。
  3. 了解保留计数,合成设置者以及何时调用释放或自动释放。 新的编译器会比旧的编译器指出更多的问题。 (我以为我很小心,但显然我不够小心。)苹果的内存pipe理指南是必读的 – 没有捷径。
  4. debugging时打开僵尸是一个好主意(在Xcode中,selectProduct | Edit Scheme …并selectDebugscheme;在Diagnostics选项卡上选中Enable Zombie Objects)。 这可以帮助你find企图使用僵尸(对象,你不应该再使用)。
  5. 泄漏仪器也是有帮助的。 在configuration文件模式下运行您的应用程序,然后select泄漏模板。 在“仪器”窗口中,select“泄漏”工具,然后选中“收集泄漏的内存内容”框,它将帮助您查看泄漏内存源自代码的位置。

我遇到了一些困难:

  • 苹果的单身模式需要“单向”添加到返回types声明:
     - ( oneway void)释放{}
  • 您可能需要在Build Settings中手动添加“armv6”作为体系结构types (并确保Build Active Architecture Only设置为NO)。

任何其他build议我应该寻找潜在的陷阱? 我有一种感觉,现在我的应用程序更加稳定,但之前我对它们感觉相当不错。

1 / Modal控制器的行为不同,如果你改变它们的大小。 如果您需要不同大小的模式对话框,请考虑使用iOS 5子视图控制器。

2 /对于表格,如果您返回无节标题和正高度,则在iOS 4中,标题已隐藏。 在iOS 5中,您必须为零标头返回零高度。

3 / UDID已弃用。 您可以使用CFUUIDCreate创build一个唯一的ID并将其保存到您的设置中,但请注意,可以备份设备数据,然后将其恢复到其他设备,并为您留下具有相同ID的两台设备。 我通过将属性kSecAttrAccessibleWhenUnlockedThisDeviceOnly保存到钥匙串中解决了这种情况。

关于你的列表:[super viewDidUnload]应该总是作为viewDidUnload中的最后一个语句被调用。 逻辑和[super dealloc]中的一样。 注意,你也应该在dealloc中调用[self viewDidUnload](因为它没有被隐式地调用(尽pipe有时是这样))。

从我的实验中,仪器中的泄漏检测不会报告没有指定属性名称而合成的属性的泄漏。