という名前のヘッダー ファイルに文字列があります。
NSString *enemy;
実装ファイルでは、このような plist ファイルからその文字列を初期化しています
NSString *path = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"];
NSDictionary *data = [NSDictionary dictionaryWithContentsOfFile:path];
NSDictionary *level_data = [data objectForKey:[@"Level" stringByAppendingFormat:@"%d", level]];
enemy = [level_data objectForKey:@"enemy"];
そして、この「敵」文字列を、このようなメソッドで使用すると
-(void) addEnemy{
if([enemy isEqualToString:@"Ostrich"]){
[some_Obj valueCalc:t];
}
}
その「addEnemy」メソッドへの最初の呼び出しでは正常に機能しますが、このメソッドを再度呼び出すと、文字列「enemy」が例外をスローします。デバッグ後、メソッド「addEnemy」への2回目の呼び出しで、文字列「enemy」がデバッガーで「変数はNSStringではありません」と表示されることがわかりました。
しかし、このように「敵」を初期化すると
enemy = [[NSString alloc] initWithString:[level_data objectForKey:@"enemy"]];
その後、それは非常にうまく機能します。
上記の問題が発生する理由を誰か教えてもらえますか?