Iphone 在启用ARC的iOS5应用程序中替换NSZoneAlloc的使用
我正在尝试修改一些使用NSZoneMalloc的旧代码。我正在使用它的项目启用了ARC,这不允许NSZoneAlloc 有问题的代码行是:Iphone 在启用ARC的iOS5应用程序中替换NSZoneAlloc的使用,iphone,objective-c,ios,ios5,automatic-ref-counting,Iphone,Objective C,Ios,Ios5,Automatic Ref Counting,我正在尝试修改一些使用NSZoneMalloc的旧代码。我正在使用它的项目启用了ARC,这不允许NSZoneAlloc 有问题的代码行是: x = NSZoneMalloc([self zone], sizeof(*x)); 是否有任何与ARC相同的代码可以用来消除错误?老实说,我真的不理解记忆分区。如果这还不够,请告诉我 提前感谢一般来说,内存分区在现代并不那么重要。尽管它在某些地方仍在使用,但您可以安全地将其替换为直接的malloc() 历史上,分区用于多个分配池,以限制内存使用并增加重用
x = NSZoneMalloc([self zone], sizeof(*x));
是否有任何与ARC相同的代码可以用来消除错误?老实说,我真的不理解记忆分区。如果这还不够,请告诉我
提前感谢一般来说,内存分区在现代并不那么重要。尽管它在某些地方仍在使用,但您可以安全地将其替换为直接的
malloc()
历史上,分区用于多个分配池,以限制内存使用并增加重用和局部性。在虚拟内存的现代世界中,它们基本上变得无关紧要了(即使在没有交换功能的平台上,如iOS)
然而,回到过去,当你知道你将要回收许多相同类型的对象时,你可以使用一个区域,以将分配开销保持在最低限度。或者,您可以通过从特定的固定大小的池中分配某些对象来限制它们占用过多内存