Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 开始NSMutableArray-已忽略调试_Objective C_Cocoa_Nsmutablearray - Fatal编程技术网

Objective c 开始NSMutableArray-已忽略调试

Objective c 开始NSMutableArray-已忽略调试,objective-c,cocoa,nsmutablearray,Objective C,Cocoa,Nsmutablearray,我只是在学习objective-c。希望对于以前使用过NSMutableArray的人来说,这是一个简单的解决方案 注意:在问这个问题之前,我在YouTube上看了3个视频,读了5篇文章。setValue:forKey有很多可用的资源,但我认为这不适用于这个场景 我正在尝试使用一个简单的数组来支持tic-tac-toe游戏中的选择。概念很简单: -该数组由9个数组节点实例化 -选择后,当前字母将放置在相应的数组节点中 -检查游戏结束的方法将引用数组节点 问题: -我尝试为每个默认对象设置NSNu

我只是在学习objective-c。希望对于以前使用过NSMutableArray的人来说,这是一个简单的解决方案

注意:在问这个问题之前,我在YouTube上看了3个视频,读了5篇文章。setValue:forKey有很多可用的资源,但我认为这不适用于这个场景

我正在尝试使用一个简单的数组来支持tic-tac-toe游戏中的选择。概念很简单: -该数组由9个数组节点实例化 -选择后,当前字母将放置在相应的数组节点中 -检查游戏结束的方法将引用数组节点

问题: -我尝试为每个默认对象设置
NSNull
值,而不是
@“
。我收到一个错误,错误为“意外的接口名称“NSNull”。 -用于调试阵列节点的NSLog逻辑从未执行。我的假设是该阵列未被填充


@synthesize lblStatus, currLetter;
@synthesize selections;
@synthesize btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8;

- (void)viewDidLoad
{
    [super viewDidLoad];

    [selections initWithObjects:
     @"", @"", @"", @"", @"", @"", @"", @"", @"", nil];

    currLetter = @"X";
    [self updateTitle];
    // Do any additional setup after loading the view, typically from a nib.
}

- (IBAction)takeTurn:(id)sender {
    UIButton *btn = (UIButton *)sender;
    if (btn.currentTitle == nil) {
        [selections replaceObjectAtIndex:btn.tag withObject:currLetter];
        [sender setTitle:currLetter forState:UIControlStateNormal];
        [self changeTurns];
    }
}

- (void)changeTurns {

    if ([currLetter isEqualToString:@"X"]) {
        currLetter = @"O";
    } else {
        currLetter = @"X";
    }

    for (NSString *node in selections) {
        NSLog([NSString stringWithFormat:@"Node: %@", node]);
    }

    [self updateTitle];
}

- (void)updateTitle {
    [lblStatus setText:[NSString stringWithFormat:@"%@'s Turn", currLetter]];
}
如果您看到其他被认为是“坏代码”的东西,我也很乐意接受这些反馈


非常感谢您的帮助。

而不是
[选择initWithObjects:
@“,@”,“@”,“@”,“@”,“@”,“@”,“@”,“@”,“零”;

写入
selections=[[NSMutableArray alloc]initWithObjects:

@“,@”,“@”,“@”,“@”,“@”,“@”,“@”,“@”,“nil];

尝试将[NSNull null]添加到该数组中。您可以在数组中添加null对象,而不是空字符串


致以最诚挚的问候

效果非常好!非常感谢您的快速响应。在未首先调用
+alloc
之前,切勿调用
-init
方法,如下所示:
[[Foo alloc]init]
。你认为这会有什么不同,为什么?点击同一个按钮将继续改变轮次。需要再添加一次验证。如果用户点击按钮时在数组中添加空对象,请检查该对象是否属于类[NSNull class]。如果没有,请不要更改回合,让用户选择或继续您的实施。我感谢您的反馈,并且我同意NSNull是我最初想要使用的方法。不过,软件没有像您描述的那样做出反应。一旦应用了标题(X或O),点击同一按钮将被忽略。