NSMutableArray添加到自我 - 约定问题

时间:2011-04-23 03:10:50

标签: objective-c cocos2d-iphone nsmutablearray enumeration

我有一个名为Singularity的类,在其中有一个创建对象内部的方法,名为createSingularity ::。
我想知道,如果添加到自我的这两种方法中的任何一种更合适/更有效。

第一种方法很简单,直接将对象添加到self,然后添加到NSMutableArray。 第二种方法是将对象添加到NSMutableArray,然后将其添加到self。 看看:

方法1 -

    Singularity *asing = [[Singularity alloc]init];
    [sing createSingularity:ccp(150,150) :ccp(2000,150)];
    [self addChild: sing.BlackHoleParticle];
    [_objects addObject: sing];
    [sing release];

方法2 -

    Singularity *sing = [[Singularity alloc]init];
    [sing createSingularity:ccp(150,150) :ccp(2000,150)];
    [_objects addObject:sing];
    [sing release];
    Singularity *singu = [_objects lastObject];
    [self addChild:singu.whiteHoleParticle];
    [self addChild:singu.blackHoleParticle];
    [singu release];  

请注意,Singularity的这些对象具有boundingBox,需要通过枚举_objects数组进行检查。
谢谢!

1 个答案:

答案 0 :(得分:4)

方法1是对的,方法2是错误的。

在方法2中,singu是对集合中对象的引用,并且您正在释放该对象。您无法释放您不拥有的对象。删除最后一行

[singu release]; 

然后就可以了。但是创建多个对象来访问函数中的元素没有意义。所以坚持方法1