1

在 Objective-C 中是否有一种很好的方法可以做到这一点,还是我必须编写自己的繁琐逻辑?

我在 iPhone 游戏中每帧创建和销毁一些小状态对象。如果我可以重用池中的对象,那就太好了。

4

3 回答 3

7

iPhone的Sparrow 框架包含一个名为“SPPoolObject”的类。该框架在内部将其用于非常常用的辅助对象,例如点、矩形或矩阵。

如果从 SPPoolObject 继承,'dealloc' 方法并不会真正删除它;相反,内存将被重用于下一个分配的对象。

这是一个非常简单的类 - 您可以轻松地将它用于您的项目。它没有任何依赖关系,因此您可以轻松地从 Sparrow 框架中获取它;)

于 2010-11-03T10:55:53.693 回答
1

Cocoa 和 Objective-C 都没有对对象池做任何特别有用的事情。他们也没有做任何事情来阻止你,但你基本上必须自己动手做。

于 2010-05-04T22:43:37.447 回答
0

我认为 table View 对不同的 TableCell 有某种池化机制

类似的东西:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
                    cellId];
    if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc]
                initWithStyle:UITableViewCellStyleDefault
                reuseIdentifier:CheckMarkCellIdentifier] autorelease];
    }

不确定是否有更通用的东西可以使用。

于 2012-01-27T12:21:33.557 回答