2011-07-21 11 views
1

NSTimerを作成して15秒ごとに呼び出しています。私が呼び出すメソッドは、Webサービスコールを行います。このメソッドでは、私はこのコードを書いています:このリークメモリはありますか

GetData *ws = [[GetData alloc]init]; 
    [ws GetSomeData:156]; 
    [ws release]; 

ここでは、Webサービスメソッドを呼び出し、呼び出してオブジェクトを解放するクラスにインスタンスを作成します。このアプローチは良いか悪いですか?

答えて

3

ここには漏れはありませんが、wsで何かしたい場合は、releaseです。代わりにautoreleaseです。

+1

なぜautoreleaseが解放されるのか説明してください。 – 1110

+0

'release'を送信すると、(あなたの例では)' retainCount'が0になり、オブジェクトの割り当てが解除されます。 'autoreleased'はあなたのオブジェクトの割り当てを解除します。そこで、あなたはそれを割り当て/初期化し、データを取得し、即座に '解放 'します。後で 'ws'を使用するとクラッシュする可能性があります。 –

+0

http://google-styleguide.googlecode.com/svn/trunk/objcguide.xmlを読んでください。ヒントやベストプラクティスがあります。彼らはあなたがリリースを追加するのを忘れた場合に漏れの可能性を最小限に抑えるので、可能であれば自動解放を使うことを提案しています:) – Bastian

1

これは正しいアプローチです。あなたはallocなので、あなたはそれを所有しているので、あなたは何かをした後にreleaseする必要があります。

補足として、メソッド名GetSomeDataは、ココアの命名規則に従わず、someDataである必要があります。

関連する問題