2011-07-26 19 views
1

私はこのコードから漏れたNSCFStringを取得しています。私はそれがNSStringと関係があると理解していますが、私は漏れがどのように起こっているのか分かりません。事前にお手数をおかけしていただきありがとうございます。Foundation NSCFStringでのメモリリーク。 NSStringを作成し、リリースしました。 Still Leaks

-(void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark{ 

    NSString *pTitle = [[NSString alloc] initWithString:placemark.title]; 

    mapView.userLocation.title = pTitle; 
    [pTitle release]; 


} 
+0

あなたは機器のリークをチェックしていますか? – Hisenberg

+0

はい、デバイスを実行していて、計測器のリークを確認しています – iOSDevSF

答えて

3

マップビューも漏れていますか?その場合、この文字列の報告されたリークは、漏れたマップビューを拡張したものに過ぎません。

ほとんどの場合、がほとんど漏れたオブジェクトは原因ではありません。原因は、ほとんどの場合オブジェクトが漏れたのダースを保持する単一のオブジェクトです。必要のない時にメモリ管理を行う

-(void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark { 
    mapView.userLocaltion.title = placemark.title; 
} 

必要がありません:):

また、あなたがにあなたのコードを削減することができます。

+0

コードを変更してmapViewのリリースを確認しました。漏れはまだそこにありますが、現在はMapKitから来ています。 プロパティをnilに設定し、iVarをdeallocで解放しています。 - (void)viewDidUnload { [super viewDidUnload]; \t self.mapView = nil;} - (void)dealloc { \t [_mapView release]; [super dealloc];} – iOSDevSF

+0

@ SteveBay22 - リークがAppleのフレームワークにある可能性もあります。それは時々起こります。ダブルチェックし、バグhttp://report.apple.comでバグを報告してください。 – PeyloW

+0

不要なときにメモリ管理を行う必要はありません:)。 –

0

Appleのフレームワークのバディにバグがたくさんあります。フレームワークからのリークを心配しないでください。

あなたの側のルールに従ってください。 alloccopyまたはretainごとに、対応するreleaseが必要です。

また、iOSはNSStringを全く異なる方法で処理します。したがって、ルールを守る方が良いです。

希望します..

関連する問題