什么是NSZone?使用initWithZone有什么好处:?

时间:2011-05-23 12:13:27

标签: iphone objective-c

有很多功能,比如

1. NSDefaultMallocZone()
2. NSCreateZone();
3. NSRecycleZone();
4. NSSetZoneName();
5. NSZoneMalloc();
and many more related to NSZone

NSZone是什么意思,在哪里使用这些功能?何时? initWithZone的优点是什么:以及如何在我的iphone应用程序中使用?

1 个答案:

答案 0 :(得分:43)

  

NSZone是Apple的优化方式   对象分配和释放。 NSZone   不是一个对象;它是不透明的   C-struct存储有关如何的信息   内存应该处理一组   对象。

     

很少需要担心   处理你自己的区域   应用;可可处理它   透明。默认的NSZone是   在启动时创建和所有对象   默认是在那里分配。所以   你为什么要用自己的?

     

如果你正在大量分配数百个   便宜的物品,你可能会发现成本   实际上为他们分配空间   变得重要。因为   标准区域一直在使用它   会变得非常零散;删除   对象可能会留下尴尬的空白   整个记忆。分配器   标准的NSZone知道这一点,它   试图优先填补这些空白   从中获取更多内存   系统,但这可能是昂贵的时间   如果区域变大了。

     

如果要批量分配对象,   然后,你可以创建自己的区域和   告诉它不要费心去寻找   将新物体放入的空隙   allocator现在可以跳到最后了   每次都分配内存   快速为新的内存分配内存   对象,节省了很多精力。

     

分配器可以节省您的时间   在其他地方,也就是要求操作系统   更多内存,区域需要做的事情   每当它填满,是另一个   如果做得很多,那就是昂贵的操作。   更快的是要求巨大的块   一次的记忆,你可以告诉   你的NSZone也可以在这里做什么。

     

有传言说NSZone可以拯救   你在Good Old中解除分配时间   天也,用简单的方法   扔掉所有分配的记忆   没有打扰电话   deallocators。如果是一组对象   自足,这可以节省很多   时间,因为你可以把它们全部扔掉   马上离开,没有繁琐   将它们全部解除分配。唉,那里   似乎没有这个天赐的迹象   在当前的文件中;该   单NSZone方法(NSRecycleZone?)   仔细地将所有物体放入   区域整齐地在默认的NSZone上。不   确实节省了大量时间。

     

因此,总而言之,区域可以节省您的时间   大规模分配。但只有   程序员知道如何使用它们!

来自CocoaDev