当我从NSMutableSet中删除未取消的对象时会发生什么

时间:2013-05-14 21:05:14

标签: objective-c

我有一个精灵的NSMutableSet,每个都被声明:

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

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

我认为垃圾收集会得到它们,但我想知道。

谢谢

2 个答案:

答案 0 :(得分:3)

从集合中删除对象会使其引用计数减1。如果没有其他引用指向该对象,则其引用计数达到0并将其解除分配。

答案 1 :(得分:0)

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