0

我有一个 NSMutableSet 的精灵,每个精灵都是这样声明的:

SpriteEntity * newProjectile = [CCSprite spriteWithFile:@"tiles.png" rect:CGRectMake(48,0,16,16)];

现在,这些存储在保留的 NSMutableSet 中(通过调用 alloc 和 init 创建)。当我在其中一个 SpriteEntities 上调用 removeObject 时,它会发生什么?

我会假设垃圾收集会得到它们,但我想确定。

谢谢

4

2 回答 2

3

从集合中删除一个对象会将其引用计数减一。如果没有其他引用指向该对象,则其引用计数达到 0 并被释放。

于 2013-05-14T21:07:26.090 回答
0

是的,如果 CCSprite 类使用标准命名约定,则该方法不会增加它实例化的对象的引用计数;因此,对象的唯一所有者是 NSMutableSet。一旦从该集合中删除对象,引用计数就会减一,使其为零,因此将对象排队以进行释放。

于 2013-05-14T21:10:28.923 回答