我正在尝试创建一个人们回答问题的游戏。我正在从文本文件中加载问题。不同的部分用•和§分开。除了当我尝试用它创建问题时,分离代码工作正常。
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文件中有硬编码的答案和答案。我正在测试。
答案 0 :(得分:2)
您需要对传递给初始值设定项的字符串保留强引用。将NSString属性设置为strong而不是assign,它将停止崩溃。
答案 1 :(得分:1)
您正在访问可能不存在于数组中的索引。尝试记录数组的count
,以查看数组中有多少条目。
此外,设置所有异常断点以查看应用程序崩溃的确切位置。或者,您可以在加载数组后立即设置断点,以查看其内容。