gpt4 book ai didi

iphone - ARC 和释放内存

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:29 25 4
gpt4 key购买 nike

网上看了很多文章,对ARC有点迷茫。我会在下面列出我的问题,请帮助我回答。

1.) 关键字 strong 有什么作用(在 @property (nonatomic, strong) … 中)?

2.) 我们是否不必再releaseautorelease 我们alloc 了,因为我收到警告说我需要不必要。 (我不在我的 Mac 上,所以我无法复制我收到的警告。)

3.) 我在 Xcode 4.2 中找不到 Leaks 工具。它去哪儿了?还是我们不再需要检查泄漏?

4.) 在使用 Xcode 4.2 创建项目时,我点击了“启用 ARC”,那么我的程序可以在 iOS 3 上运行吗? (我认为 ARC 只支持 iOS 4 及以上版本。)

最佳答案

  1. strong 是与 retain 类似的 ARC(ARC 下没有 retain)。这意味着属性值将由定义 @property 的类持有,并在重新分配或释放时释放。 (请注意,在 ARC 下,无需释放或取消 dealloc 中的属性)。

  2. ARC 的重点是由编译器处理retain/release 例程,因此不需要手动内存管理方法。

  3. 您可以通过运行 Profile(Product -> Profile 菜单)并选择 Leaks instrument 来检查泄漏。泄漏可以通过循环引用或在 CoreFoundation 代码中引入(ARC 不适用于 CoreFoundation)。此外,如果您混合使用 ARC 和非 ARC 代码,后者可能会成为泄漏源。

  4. 从 iOS 4.0 开始的操作系统支持 ARC(尽管需要 iOS 5 SDK)。 4.0 和 5.0 ARC 支持之间的主要区别在于 weak 属性说明符的可用性。 weak 属性(__weak 变量)在其指向的strong 值被释放时会自动失效。 4.0 中没有 weak 属性,所以应该使用 __unsafe_unretained 说明符(它类似于 assign 说明符,它不保留值并且可以指向已经释放的值,所以这是危险的)。

这是对 ARC 的一个很好的解释: Everything you need to know about automatic reference counting

关于iphone - ARC 和释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8565172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com