NSMutableStringを使って一時的に格納してある文字列を、適度なタイミングでNSMutableDictionaryに格納しようと思って、とは言えインスタンスをそのまま格納するのでは後でStringの内容が変わったときに格納されたものもすべて変わってしまう、ということで
[dict setObject:[str copy] forKey:@"key"];
とやってみたら、メモリリークが起きた。これではダメなのか、と
[dict setObject:[NSString stringWithString:str] forKey:@"key"];
と変えてみたらリークがなくなった。
copyだとダメなのか…っていうかcopyって何なんだろう。何をコピーするのだろう。
まだまだ理解が足りない。