我的NSMutableArray对象在函数中间消失。 Game.h:
@interface Game : NSObject
{
NSMutableArray* boardPositions;
}
Game.m:
boardPositions=[[NSMutableArray alloc]initWithObjects:[[NSMutableString alloc]initWithString:@" "], nil];
[Players playTurnWithPlayerTurn:playerTurn andBoardPositions:boardPositions];
Players.m:
+(void) playTurnWithPlayerTurn:(BOOL)playerTurn andBoardPositions:(NSMutableArray*)boardPositions
{
//Printing "X turn" or "O turn"
if (playerTurn) {
NSLog(@"O turn");
}
else
NSLog(@"X turn");
NSLog(@"Where do you want to insert the %c?",playerTurn?'O':'X');//boardPositions disappears
char input[3];
gets(input);
NSString *inputString=[NSString stringWithUTF8String:input];
//Checking user's input and implementing his choice to the board
if ([inputString isEqualToString:@"0,0"]) {
[boardPositions replaceObjectAtIndex:0 withObject:playerTurn?@"O":@"X"];
}
有人知道如何解决这个问题吗?
它从这里消失了,我无法访问它:
之前:
http://i.stack.imgur.com/s6BEa.jpg
后:
http://i.stack.imgur.com/LqPu2.jpg
答案 0 :(得分:0)
答案 1 :(得分:0)
这可能与您使用类方法而不是实例方法这一事实有关。使用实例方法创建模拟版本,看看是否保留了数组。如果确实如此,那么您就迈出了解决方案的第一步。此外,我假设您没有其他操作在您的阵列上运行,并且它没有从另一个超出范围的功能中解除分配。
答案 2 :(得分:0)
你在使用ARC吗?替换:
@interface Game : NSObject
{
NSMutableArray* boardPositions;
}
使用:
@interface Game : NSObject
{
@property(nonatomic, strong) NSMutableArray* boardPositions;
}
并将您对boardPositions的其他引用更改为self.boardPositions。如果你不再使用它,编译器可能会优化你的数组。