アップルインスタンス変数mainSprocketためsetterメソッドでこれをやっている:-releaseではなく、セッターメソッドでmyautoreleaseをインスタンス変数に送信する必要がありますか?
– (void)setMainSprocket:(Sprocket *)newSprocket {
[mainSprocket autorelease];
mainSprocket = [newSprocket retain];
return;
}
は、なぜ彼らは-release -autorelease送信しませんか?ここでは悪い影響がありますか?インスタンス変数mainSprocketによって保持されている現在のオブジェクトは、もはやそのインスタンス変数によって使用されなくなったということだけが分かります。他の誰かがまだそのオブジェクトに正確に興味を持っている場合、そのメソッドはそれを保持することができますか?だから落ち着くべきだと思いますか?
感謝。しかし、それが同じオブジェクトではない場合、私は何度もそのメソッドを呼び出す、私はautoreleaseプールの問題に遭遇しないだろうか?プールはアプリケーションの主な機能でのみ排水されることがありますか? – Thanks
多くのオブジェクトが作成されている機能を使用している場合は、自動解放プールを排水できます。 –
ビルドしているプログラムフローが関数を何度も呼び出す場合は、引用している簡単な例のように、Appleの他の戦略を採用することができます。特別な自動解放プールを設定して自分で排水するか(gsが示唆するように手動で主自動解放プールを排水する)、自動解放を使用しないでください。あなたが取るアプローチは、あなたのニーズに完全に依存します。 –