我在Cocos2D 2中創建一個遊戲,但我的問題是與NSArray/NSMutableArray。無法識別的選擇器發送到實例NSArray/NSMutableArray
一個名爲SocketManager的類,用於管理從CCSprite派生的套接字類。套接字只有一個叫int的額外成員變量,它是一個int。 SocketManager保持一個包含遊戲中的所有Sockets sprites的數組。
在遊戲類我有這樣的代碼到插座添加到經理:
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];
}
}
這是SocketsManger添加功能:
-(void)addSocket:(CCSprite *)socket {
[sockets addObject:sockets];
}
後來在更新功能的遊戲它會檢查該行是否需要更改並調用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或[插座行]我得到的錯誤:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM row]: unrecognized selector sent to instance
哇,我錯過了。謝謝! – Marquisk2