gpt4 book ai didi

objective-c - 在连续的内存块中分配objective-c对象

转载 作者:行者123 更新时间:2023-12-01 17:35:13 25 4
gpt4 key购买 nike

我想从某个objective-c类中分配x个对象,使它们在内存中连续布局。平台是iOS。

我要解决的实际问题是如何将这些 x 对象存储在内存中,以便我可以在尽可能少的缓存未命中的情况下迭代它们。我正在考虑创建一个简单的 c 风格的objective-c 对象数组,但是当我用Obj *obj = [[object alloc] init]; 分配这样一个对象时并将其分配给我的数组中的索引,我只是存储指针,所以这显然不起作用。

我怎样才能做到这一点?

编辑:更多背景知识:我正在尝试将面向数据的设计应用于我的 iOS 游戏引擎,并且我相信以这种方式在内存中布置对象会给我带来简单的性能提升(我错了吗?),就像我当前的引擎一样需要最小的调整。

最佳答案

如果你真的想这样做(除非你确定你正面临瓶颈,否则不要优化),你将不得不覆盖 +allocWithZone:您的类(class)的方法。我建议你阅读 Mike Ash 最近的精彩文章 Custom Object Allocators in Objective-C .引用它:

An Objective-C object is just a chunk of memory with the right size, and with the first pointer-sized chunk set to point at the object's class. A custom allocator thus needs to return a pointer to a properly-sized chunk of memory, with the class filled out appropriately.



因此,您可以先分配大量内存(使用 calloc() ),然后再分配 allocWithZone:方法可以在这个大块内存中的正确位置保留一个空间。

关于objective-c - 在连续的内存块中分配objective-c对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5211408/

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