0

我正在制作一个游戏,它从常规 C 数组中分配一个问题的标签。

- (void)viewDidLoad
{
[super viewDidLoad];

for (int i = 0; i < 45; i++) {
    basketball_numbers1[i] = (arc4random()%999)+100;
    basketball_numbers2[i] = (arc4random()%999)+100;
    for (int j = 0; j < 30; j++) {
        int first = basketball_numbers1[i];
        int second = basketball_numbers2[i];
        basketball_questions[j] = [[NSString stringWithFormat: @"%d + %d", first, second] retain];
        basketball_answers[j] = [[NSString stringWithFormat: @"%d", basketball_numbers1[i] + basketball_numbers2[i]] retain];

    }

}

在我将它们注释掉之前,这段代码可以正常工作并将问题和答案打印到控制台没有问题。

但是当我运行模拟器并输入正确答案时,相同的问题会留在标签上,即使计数(用于增加数组索引的变量)增加了,我通过 NSLog 确认了这一点。

其他一些注意事项:当我手动输入数组的值时,它没有问题。在做了一些研究之后,我还在数组末尾添加了“保留”,这实际上消除了我在此之前遇到的一些问题,但我不确定保留/释放是用于常规 C 数组还是仅用于 NSArray。

这是单击按钮时在文本字段中读取的代码。

- (IBAction)basketball_click:(id)sender {

basketball_input = self.basketball_textfield.text;
NSLog(@"INPUT: %@", self.basketball_textfield.text);

if ([self.basketball_textfield.text isEqualToString:(basketball_answers[count])]) {

    NSLog(@"THEY ARE EQUAL");

    isCorrect = TRUE;

    self.basketball_textfield.text = @"";

}

...

if(isCorrect) {

    NSLog(@"Retain Count: %d", [basketball_questions[count] retainCount]);

    correct.text = @"CORRECT!";
    basketball_right++;
    count++;

    NSLog(@"COUNT: %d", count);

    question_label.text = basketball_questions[count];

    NSLog(@"NEW QUESTION: %@", basketball_questions[count]);

}
4

1 回答 1

0
for (int i = 0; i < 45; i++) {
    first  = (arc4random()%999)+100;
    last   = (arc4random()%999)+100;
    basketball_questions[i] = [[NSString stringWithFormat: @"%d + %d", first, second] retain];
    basketball_answers[i] = [[NSString stringWithFormat: @"%d", first+last] retain];

    }
于 2012-11-13T20:46:58.547 回答