私は現在、iOS開発に取り組もうとしています。現在、メモリ管理を理解するのに苦労しています。これが私の混乱の原因です:
NSString *path = [self.dataPath stringByAppendingPathComponent:@"dummy.plist"];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
NSString *dummyKeyValue = [dict valueForKey:@"dummyKey"];
// NSLog(@"%@",[NSString stringWithString:dummyKeyValue]);
[dict release];
NSString *anotherString = [dummyKeyValue lowercaseString];
このコードは、最後の行で EXC_BAD_ACCESS エラーをトリガーします。NSDictionary がそのキー値を解放するためと思われます。私が理解していないのは、dummyKeyValue
定義が考慮されていない理由です。明らかdummyKeyValue
にまだ の値を指しているためです"dummyKey"
。
行をコメントアウトすると、次の問題、さらにおかしな現象が発生しますNSLog
。何らかの方法で使用dummyKeyValue
すると、それが指すメモリの解放が妨げられるようです。なぜ?
助けていただければ幸いです。