我有一个名为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数组进行检查。
谢谢!
答案 0 :(得分:4)
方法1是对的,方法2是错误的。
在方法2中,singu是对集合中对象的引用,并且您正在释放该对象。您无法释放您不拥有的对象。删除最后一行
[singu release];
然后就可以了。但是创建多个对象来访问函数中的元素没有意义。所以坚持方法1