質問
ヘッダーファイルで変数を宣言し、実装で合成します。ビューが読み込まれると(ViewDidLoad)、plistファイルを読み取り、変数に値を設定します。 NSLogで、変数に値が含まれていることがわかります。ただし、ビューが読み込まれた後、メソッドを実行するボタンを介してユーザーとやり取りします。そのメソッドの中で、値を再度チェックすると無効です。初期ロード後に変数がその値を保持しないのはなぜですか?
program.h
....
NSString * user_title;
...
@property (nonatomic, retain) NSString *user_title;
program.m
@synthesize user_title;
-(void)viewDidLoad{
NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
user_title = [array objectAtIndex:0];
[array release];
}
....
-(IBAction)user_touch_screen:(id)sender
{
user_label.text = user_title; //user_title has an invaliud value at this point
....
解決
user_title = [array objectAtIndex:0]
は変数を保持しません。
代わりにこれを使用:
self.user_title = [array objectAtIndex:0];
これは、合成したセッターを使用し、値を保持します。
他のヒント
配列から取得した値を保持する必要があります。
所属していません StackOverflow