【问题标题】:Replacing usage of NSZoneMalloc in an ARC enabled iOS5 App在启用 ARC 的 iOS5 应用程序中替换 NSZoneMalloc 的使用
【发布时间】:2012-06-06 15:13:08
【问题描述】:
我正在尝试修改一些使用 NSZoneMalloc 的旧代码。我在其中使用它的项目启用了不允许 NSZoneMalloc 的 ARC。
有问题的代码行是:
x = NSZoneMalloc([self zone], sizeof(*x));
是否有任何等效代码可以与 ARC 一起使用以消除错误?老实说,我不太了解内存分区。如果这还不够信息,请告诉我。
提前致谢
【问题讨论】:
标签:
iphone
objective-c
ios
ios5
automatic-ref-counting
【解决方案1】:
一般来说,内存分区在现代并不那么重要。虽然在某些地方仍然使用它,但您可以放心地将其替换为直 malloc()。
过去,区域用于多个分配池以限制内存使用并增加重用和局部性。它们基本上在现代虚拟内存世界中变得无关紧要(即使在平台上,例如没有交换的 iOS)。
但是,在过去,当您知道要回收大量相同类型的对象时,您可以使用区域,以将分配开销降至最低。或者,您可以通过从特定的固定大小的池中分配某些对象来限制它们消耗过多的内存。