fetchHTMLが別のスレッドで呼び出されていると言えば、もっと明るくなるでしょうか?stringWithContentsOfURLメモリが漏れている
_NSAutoreleaseNoPool()::私はまたのようなデバッグコンソールで複数のメッセージを見ていたクラスNSCFDictionaryのオブジェクト0xd92860は、所定の位置にいないプールで自動解放 - ちょうど
_NSAutoreleaseNoPoolを(漏れた):クラスNSCFStringのオブジェクト0xd92800はで自動解放しましたプールがない - ちょうど漏れている
私はiPhoneアプリの開発、Objective-Cには新しいが、プログラミングやC/C++には新しくない。私はリーク性能ツールを使用しており、多くのリークを示しています。これは、10.5キロバイト漏れであり、それはライン上で発生します。以下この上
NSString * xml = [NSString stringWithContentsOfURL:urlobj];
スタックトレースは次のとおりです。
stringWithContentsOfURL
initWithContentsOfURL
initWithDataOfEncoding
...
は、誰もがこれが起こってなければならない理由のアイデアを持っています。私はここでオートレリーズオブジェクトを取得しているという印象を受けており、コールを保持せずにこれを呼び出し元に返すことができます。私は、xmlオブジェクトをインスタンス変数に格納するために、処理のためだけに使用していません。ここ
は機能コードである:
- (NSString *) fetchHTML: (NSString*) url{
@try
{
NSURL* urlobj = [NSURL URLWithString:url];
NSString * xml = [NSString stringWithContentsOfURL:urlobj];
return xml;
}
@catch(NSException *ex){
NSLog(@"Error fetchingHTML");
return nil;
}
return nil;
}
「fetchHTMLが別のスレッドで呼び出されていると言ったら、もっと明るくなっていますか?」あなたはドキュメントに従って、スレッド用の自動解放プールを作成しましたか?できればそうでないにしても、スポーンされたスレッドのメソッド/ファンクション・エントリー・ポイントで最初に行うことの1つです。 – johne