2

緑の手です。私は機器を使用していて、これまでのところ非常に役立ちましたが、今は混乱しています'メモリリークが報告され、そのリークされたブロック履歴は、そのメモリの参照カウントが最終的に0になったことを示しています。 。 どういう意味ですか?
ここに画像を投稿できなかったのは本当に恥ずかしいです...だからテキストで説明しなければなりません。それがあなたにとって十分に明確であることを願っています:

イベントタイプ|| RefCt || 責任ある図書館|| 責任ある発信者
Malloc|| 1 || MyWeather || + [ForecastData parseSingleForecastWithXMLElement:]自動リリース
|| || MyWeather || + [ForecastData parseSingleForecastWithXMLElement:]
保持|| 2 || MyWeather || + [ForecastData parseWithData:]
リリース|| 1 || 財団|| + [NSAutoreleasePoolドレイン:]
保持|| 2 || 財団|| + [NSThread initWithTarget:selector:object:]
リリース|| 1 || 財団|| + [NSString compare:options:]
リリース|| 0 || MyWeather || + [RootViewControllerdealloc]

どんな助けでもありがたいです〜

4

3 に答える 3

4

これは、forecastDataのdeallocに[superdealloc]がないことが原因でした。そのため、forecastDataの保持カウントがゼロになったにもかかわらず、forecastDataのメモリの一部が解放されることはありません。とにかく、みんなありがとう。

于 2010-12-21T06:47:23.197 に答える
0

デバイスでこれを試しましたか?実際にはリークではないリークが表示されることがあります。

もう1つの理由は、NSZombieが有効になっていることである可能性があります。これは、オブジェクトが実際には解放されないことを意味します。

于 2010-12-18T19:47:05.993 に答える
0

多くのサンプルコードを提供していないので、何でもかまいません。MyWeatherのRefCountはゼロですが、Foundationはまだ1なので、リリースされていないNSStingをどこかに割り当てたのではないでしょうか。

ところで。文字列をalloc-initすることは決してありません。代わりに、テキストを直接設定し、残りはメモリ管理に任せます。理由はわかりませんが、少しバグがあると思います。次のようなことを試みると、奇妙なエラーが発生することがあります。

NSString *str = [[NSString alloc] initWithString:@"some Text"];
myLabel.text = str;
[str release];

myLabelそれを保持する必要がありますが、保持しません。しようとするとエラーにreleaseなります。(そしてそうでない場合はリーク)

使用する場合

NSString *str = @"some Text";
myLabel.text = str;

それはうまく機能し、エラーやリークはありません。

于 2010-12-18T19:14:30.800 に答える