我有一个问题,希望有人能回答。我是目标C的新人,虽然大多数都给我带来了小麻烦,但很明显,我无法正确理解在班级之间通过NSMMetableArray。
这就是我想赶上的 NSM 移动阵列的班级
#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
这是来自游戏 Layer 类的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];
这是同一控制器类中的 拾取器函数
-(NSMutableArray *) getRatsArray {
return ratsArray;
}
鼠标阵列是控制器类的全球性变数, 也是捕鼠者“Canbee”类的变数。
我还要提一下,我真的不想通过一个阵列的副本,而是要通过一个指针或参考,这样我的抓取类就可以与原始阵列及其包含的对象互动。
非常感谢你的帮助!