2013-12-10 47 views
-1

我在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 

回答

2

這個方法查找錯誤嘗試將其更改爲:

-(void)addSocket:(CCSprite *)socket { 

[sockets addObject:socket]; 
} 

您嘗試將數組添加到數組中但您想要添加CCSprite對象。 它應該有所幫助。

+0

哇,我錯過了。謝謝! – Marquisk2

1

在對象嘗試

[sockets addObject:socket]; 

沒有是你要添加

2

你有額外的S組合。在添加socket函數改變這種

[sockets addObject:sockets]; 

[sockets addObject:socket]; 
相關問題