0

我正在尝试创建一个人们回答问题的游戏。我正在从文本文件中加载问题。不同的部分用 • 分隔,问题用 § 分隔。用于分离的代码工作正常,除非我尝试用它创建问题。

for(int n = 0; n<[questionsFromFile count]; n++)
{
    NSArray *params = [((NSString *)questionsFromFile[n]) componentsSeparatedByString:@"•"];

    NSString *fact = params[0];
    NSString *prompt = params[1];
    NSString *image = params[2];
    NSString *answerAsString = params[3];

    BOOL answer = [answerAsString boolValue];
    YNQuestion *question = [[YNQuestion alloc]initWithFact:fact prompt:prompt image:image answer:answer];
    [self.allQuestions addObject:question];
}

在 questions.txt 中:

fact•prompt•unknown.png•YES
§fact•prompt•unknown.png•NO

当我运行它时,它工作正常,直到加载一个问题。然后,它与EXC_BAD_ACCESS(code=2). 如果我将事实、提示、图像等替换为等于 @"hello" 或 @"goodbye",它可以正常工作。

我正在使用 ARC。另外,这里是YNQuestion.

@interface YNQuestion : NSObject
@property(assign, nonatomic)NSString *fact;
@property(assign, nonatomic)NSString *prompt;
@property(assign, nonatomic)NSString *image;
@property(assign, nonatomic)BOOL answer;
-(id)initWithFact:(NSString *)fact prompt:(NSString *)prompt image:(NSString *)image answer: (BOOL) answer;
-(BOOL)checkIfCorrect: (BOOL)answer;
@end

现在,它起作用了。只有那些不是我默认的。

惊喜!它不再起作用了。我相信错误在于 .txt 文件中有硬编码的答案和答案。我正在测试。

4

2 回答 2

2

您需要保留对传递给初始化程序的字符串的强引用。将 NSString 属性设置为 strong 而不是 assign ,它将停止崩溃。

于 2013-07-30T21:37:23.407 回答
1

您正在访问数组中可能不存在的索引。尝试记录count数组,以查看数组中有多少条目。

此外,设置所有异常断点以查看应用程序崩溃的确切位置。或者您可以在加载数组后立即设置断点以查看其内容。

于 2013-07-30T21:12:11.137 回答