Ios 发送到实例NSArray/NSMutableArray的选择器无法识别
我在CoCoS2D2中创建了一个游戏,但我的问题是NSArray/NSMutableArray 一个名为SocketManager的类,用于管理从CCSprite派生的套接字类。Socket只有一个名为row的额外成员变量,它是一个int。SocketManager保留一个包含游戏中所有Socket精灵的数组 在游戏类中,我使用以下代码将套接字添加到管理器:Ios 发送到实例NSArray/NSMutableArray的选择器无法识别,ios,objective-c,arrays,cocos2d-iphone,nsarray,Ios,Objective C,Arrays,Cocos2d Iphone,Nsarray,我在CoCoS2D2中创建了一个游戏,但我的问题是NSArray/NSMutableArray 一个名为SocketManager的类,用于管理从CCSprite派生的套接字类。Socket只有一个名为row的额外成员变量,它是一个int。SocketManager保留一个包含游戏中所有Socket精灵的数组 在游戏类中,我使用以下代码将套接字添加到管理器: for (int i = 1; i <= numRows; i++) { for (int j = 1; j &l
for (int i = 1; i <= numRows; i++) {
for (int j = 1; j <= i; j++) {
Socket *socket =[Socket spriteWithFile:@"Tile_Socket.png"];
socket.row = i;
socket.anchorPoint = ccp(0.5, 0.5);
/* Shortend to cut out useless code */
[socketsManager addSocket:socket];
[self addChild:socket];
}
}
稍后在游戏中的更新函数中,它会检查行是否需要更改,并调用SocketManager的函数,该函数名为:
-(NSArray *)searchSocketByRow:(int)row; {
NSMutableArray *array = [[NSMutableArray alloc] init];
for (Socket *socket in sockets)
CCLOG(@"Row: %i", socket.row);
// if ([socket row] == row)
// [array addObject:socket];
// CCLOG(@"Found %i sockets.", [array count]);
// return [NSArray arrayWithArray:[array mutableCopy]];
}
当我尝试调用socket.row或[socket row]时,我得到错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM row]: unrecognized selector sent to instance
试一试
如果在要添加的对象上没有s,此方法看起来是错误的,请尝试将其更改为:
-(void)addSocket:(CCSprite *)socket {
[sockets addObject:socket];
}
您尝试将数组添加到数组中,但希望添加CCSprite对象。
这应该会有帮助。你的混音中有一个额外的S。在addsocket函数中更改
[sockets addObject:sockets];
到
哇,我错过了。谢谢
-(void)addSocket:(CCSprite *)socket {
[sockets addObject:socket];
}
[sockets addObject:sockets];
[sockets addObject:socket];