0

在我使用 StackOverflow 的那段时间里,我注意到一些用户在发布他们的代码时所有版本仍然存在,尽管发布已被弃用。通过释放,我的意思是:

[self.data release];

为什么用户仍然这样做?我对旧版本的 iOS 编程一无所知,并且很想这样做,但是当我尝试在我正在构建的应用程序中发布某些内容时,我会收到弃用错误或警告。如果我刚才说的是正确的,我该如何为旧版本编程?另外,如何防止这些错误?

4

2 回答 2

2

好吧,有点宽泛的问题,直截了当的答案是:去阅读文档。

来自文档高级内存管理

Objective-C 提供了两种应用程序内存管理方法。

1) 在本指南中描述的方法中,称为“手动保留释放”或 MRR,您通过跟踪您拥有的对象来显式管理内存。这是使用称为引用计数的模型实现的,该模型是 Foundation 类 NSObject 与运行时环境一起提供的。

2) 在自动引用计数或 ARC 中,系统使用与 MRR 相同的引用计数系统,但它会在编译时为您插入适当的内存管理方法调用。强烈建议您将 ARC 用于新项目。如果您使用 ARC,通常不需要了解本文档中描述的底层实现,尽管它在某些情况下可能会有所帮助。有关 ARC 的更多信息,请参阅过渡到 ARC 发行说明。

好吧,您使用的是第二种方法,但是在过去,程序员使用手动保留释放..而一些老派人士(将我算作一个)仍在使用它们..

向 ARC 发行说明的过渡将经历此过渡。

编辑:一些补充(首先作为评论发布,但认为最好在答案中添加它..)

如果您首先从 ARC 开始,那么这就是您要走的路。手动引用计数一开始很难/令人困惑,但一旦学会,将帮助您深入了解如何在核心级别管理内存(相信我,这将提高您作为 iOS 程序员的信心水平)。请记住,ARC 所做的是在编译时自动添加此保留/释放调用所以保留释放调用仍然存在,只是你不必担心它

您可以在不了解 Manual Retain Release 范式的情况下成为一名 iOS 开发人员,但如果您学习它们,不会有什么坏事(也不会发生很多好事)。您可以在睡前阅读一些东西。

于 2012-12-27T05:49:46.737 回答
1

最近 XCode 的新功能是 ARC(自动资源计数)。如果 ARC 已打开,就像您的情况一样,那么您不能也不会释放自己的对象。如果您选择关闭 ARC,那么您将负责释放您自己的对象。建议将 ARC 保持打开状态,除非您出于其他原因需要将其关闭。

快速谷歌搜索显示此站点以获取更多信息:http ://www.drdobbs.com/mobile/automatic-reference-counting-on-ios/240000820

于 2012-12-27T05:49:17.733 回答