ファイルから文字列を読み取る次の 2 つの方法を検討してください。
NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"txt"];
NSString *string = [NSString stringWithContentsOfFile:path encoding:NSASCIIStringEncoding error:NULL];
NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"txt"];
NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path];
NSData *data = [file readDataToEndOfFile];
NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
[file closeFile];
私は方法 1 に頼ることを好みますが、次のコンテキストで使用すると奇妙な動作をします。
NSString *string; // CLASS VARIABLE
(void) setupView
{
string = ...; // LOADING THE STRING
}
(void) drawView
{
...; // USING THE STRING
}
要するに、これは NSTimer に基づく OpenGL-ES 描画ループです。問題は、最初のフレームでのみ文字列にアクセスできることです。次のフレームで、文字列にアクセスしようとすると、iPhone シミュレーター (2.2) がクラッシュします。
おそらく「私のコード、または使用している OpenGL-ES コードの何か」と言う人がいるでしょう...しかし、方法 2 を使用して文字列をロードすると、すべてが意図したとおりに機能するという奇妙な事実をどのように説明すればよいでしょうか?
手がかりはありますか?