私は最初の大きなアプリに入っていて、ここではメモリ管理に少し問題があります。IOS開発、ifとelseとautoreleaseを使ったリターン関数
-(id) dateFormatter:(id)date{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
if([date isKindOfClass:[NSString class]])
return [dateFormatter dateFromString:date];
else
return [dateFormatter stringFromDate:date];
}
ここでわかるように、この例のすべてのリターンは、最後に自動解放が必要です。しかし、私はautoreleaseを追加すると、私はEXC_BAD_ACCESSエラーが発生しているし、すべてのことがうまく動作していない。私は問題を分析し、関数内にあまりにも多くのautoreleaseがあるが、私はどのように私はそれなしでNSDateFormatterのメモリを解放することができないのか分からない。
誰でもこれを説明できますか?
確かに私はそれをすることができますが、私が試したやり方ではありませんか?ありがとう、これは明白なやり方で、これを行う方法であれば、それは私がやることです:-) – Erez
誤ったオブジェクトに 'autorelease'を追加しているかのように見えます。あなたの質問から、私はあなたが行っていることを集めています: '[[dateFormatter dateFromString:date] autorelease];'それを置いておくべきです: '[[NSDateFormatter alloc] init] autorelease];' –