我有个问题希望有人能回答。我是 Objective C 的新手,虽然其中大部分都给我带来了一点麻烦,但很明显我不明白在类之间正确传递 NSMutableArrays。以下是相关代码:
这是我想捕捉 NSMutableArray 的类
#import "CanBee.h"
#import "Rat.h"
@implementation CanBee
-(id) init
{
if ((self = [super init])) {
if([[self parent] respondsToSelector:@selector(getRatsArray)] == YES)
{
ratsArray = (NSMutableArray *) [[self parent] performSelector:@selector(getRatsArray)];
}
[self scheduleUpdate];
}
return self;
}
-(void) update:(ccTime)delta
{
for (int i = 0; i <= ratsArray.count; i++) {
NSLog(@"in rats array loop in canBee: %i",i);
Rat * rat = [ratsArray objectAtIndex:i];
if (abs(self.position.x - rat.position.x) < 10 && abs(self.position.y - rat.position.y) < 10) {
[[self parent] removeChild: rat cleanup:TRUE]; //<-- this line is probably not correct, but not relevant to my question anyway, don't worry about it for this post
}
}
}
@end
这是来自 gameLayer 类的 init 函数,我的游戏的主控制器类
ratsArray = [NSMutableArray alloc];
Rat * rat = [Rat spriteWithFile:@"rat.png"];
[rat setPosition:ccp((4 * 53) - 25,100)];
[rat setScale:.75];
[self addChild:rat z:6];
[ratsArray addObject:rat];
这是同一个控制器类中的getter函数
-(NSMutableArray *) getRatsArray {
return ratsArray;
}
我应该提一下,ratsArray 是控制器类中的一个全局变量,并且在捕手“CanBee”类中也是如此。
我还应该提到我真的不想传递数组的副本,而是传递指针或引用,以便我的捕获类可以与原始数组及其包含的对象进行交互。
非常感谢你的帮助!