转换到iOS 5时需要注意的事项

摘要:您可以添加到我的清单中,当迁移到iOS 5时要注意吗? StackOverflow是非常宝贵的,因为我一直致力于升级到iOS 5.我发现了一些很基本的东西,我会错过在Xcode 4.2之前,我想知道什么其他“陷阱”潜伏。

详细说明:本周iOS5的发布,我不得不对几个我的应用程序进行一些更改。 Xcode 4.2做了一个更好的工作分析内存管理代码,因为新的ARC功能。 iOS 5更新是一个伟大的点,在其中审查所有的内存管理代码。新编译器还发现了许多早期编译器错过的其他问题。感谢苹果编译器工程师。这里是已经帮助的主要东西(和许多他们也将适用于早期版本的iOS)。

>确保call [super dealloc] at the END of your dealloc methods,而不是开始。
>在viewDidUnload,some people have reported bugs that require [super viewDidUnload] to be called at the end,而不是您的viewDidUnload的开头。
>了解保留计数,合成设置器以及何时调用释放或自动释放。新编译器将指出比旧编译器更多的问题。 (我以为我一直很小心,但显然我不够小心。)苹果的memory management guide是需要阅读 – 没有捷径。
>这是一个好主意turn on zombies when debugging(在Xcode,选择产品|编辑方案…并选择调试方案;在诊断选项卡上,选中启用Zombie对象)。这可以帮助你找到僵尸的尝试使用(你不应该使用的对象)。
> Leaks乐器也很有帮助。在配置文件模式下运行应用,然后选择泄漏模板。在“仪器”窗口中,选择“泄漏”仪器,然后选中“收集泄漏的内存”框,它将帮助您了解泄漏的内存在代码中的位置。

有几个我遇到的奇怪的事情:

>苹果的singleton pattern需要“oneway”添加到返回类型声明:

    - (oneway void) release { }

>您可能需要在您的构建设置中的manually add “armv6” as an architecture type(并确保构建仅活动架构设置为否)。

任何其他建议的潜在陷阱我应该寻找?我有一种感觉,我的应用程序现在更稳定,但我觉得以前很好。

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

2 /对于表,如果你返回nil节头和正高,在iOS 4中,头被隐藏。在iOS 5中,您必须为nil标头返回零高度。

3 / UDID已弃用。您可以使用CFUUIDCreate创建唯一的ID并将其保存到您的设置,但请注意,设备数据可以备份,然后恢复到另一个设备,让您有两个设备具有相同的ID。我解决了情况通过保存我的id到keychain与属性kSecAttrAccessibleWhenUnlockedThisDeviceOnly。

关于您的列表:
[super viewDidUnload]应该总是被调用作为viewDidUnload中的最后一个语句。逻辑与[super dealloc]中的逻辑相同。注意,你应该在你的dealloc中调用[self viewDidUnload](如果你还没有释放你的内存),因为它不是隐式调用(虽然有时它是)。

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

http://stackoverflow.com/questions/7774196/what-to-watch-out-for-when-transitioning-to-ios-5

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:转换到iOS 5时需要注意的事项