我有一个精灵的NSMutableSet,每个都被声明:
SpriteEntity * newProjectile = [CCSprite spriteWithFile:@"tiles.png" rect:CGRectMake(48,0,16,16)];
现在,它们存储在一个保留的NSMutableSet中(通过调用alloc和init创建)。当我在其中一个SpriteEntities上调用removeObject时,会发生什么?
我认为垃圾收集会得到它们,但我想知道。
谢谢
答案 0 :(得分:3)
从集合中删除对象会使其引用计数减1。如果没有其他引用指向该对象,则其引用计数达到0并将其解除分配。
答案 1 :(得分:0)
是的,如果CCSprite类使用标准命名约定,则该方法不会增加它实例化的对象的引用计数;因此,对象的唯一所有者是NSMutableSet。从该集合中删除对象后,引用计数减1,使其为零,并因此将对象排队以进行重新分配。