在 Objective-C 中是否有一种很好的方法可以做到这一点,还是我必须编写自己的繁琐逻辑?
我在 iPhone 游戏中每帧创建和销毁一些小状态对象。如果我可以重用池中的对象,那就太好了。
在 Objective-C 中是否有一种很好的方法可以做到这一点,还是我必须编写自己的繁琐逻辑?
我在 iPhone 游戏中每帧创建和销毁一些小状态对象。如果我可以重用池中的对象,那就太好了。
iPhone的Sparrow 框架包含一个名为“SPPoolObject”的类。该框架在内部将其用于非常常用的辅助对象,例如点、矩形或矩阵。
如果从 SPPoolObject 继承,'dealloc' 方法并不会真正删除它;相反,内存将被重用于下一个分配的对象。
这是一个非常简单的类 - 您可以轻松地将它用于您的项目。它没有任何依赖关系,因此您可以轻松地从 Sparrow 框架中获取它;)
Cocoa 和 Objective-C 都没有对对象池做任何特别有用的事情。他们也没有做任何事情来阻止你,但你基本上必须自己动手做。
我认为 table View 对不同的 TableCell 有某种池化机制
类似的东西:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
cellId];
if (cell == nil)
{
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CheckMarkCellIdentifier] autorelease];
}
不确定是否有更通用的东西可以使用。