私はIBActionインスタンスメソッドdosomethingを持つ1つのコントローラクラスXを持っています。クラスの割り当てと解放
私はいくつかの計算を行い、自己を委任する他のクラスYを持っています。
このメソッドでは、クラスYのインスタンスが作成されます。ここでYのインスタンスが解放されるべきです。@propertyはこのための唯一の解決策です。
//このアクションは、クラスXにある
- (IBAction)がdoSomethingの:(ID)、送信者 {
のY *はY = [YのALLOC] INIT]。
// initメソッドがYで実装されていて、その代理人だけでなく、何らかのジョブが実行されています。 yをリリースする場合は それはクラッシュだろう。そこでyを解放する場所はどこですか? @propertyは1回のメモリを作成してそれを使用することによって解決されます。 次回に他のオブジェクトが作成されたときにのみ、これを解放する方法はありますか?
// [yリリース];そのクラッシュ。
}
こんにちは。ほんの少しの意味論的問題:クラスは一度だけ割り当てられ、Objective-CランタイムがメモリAFAIKから取り出されるまで、決して「解放」されたり、割り当て解除されることはありません。だから、あなたが本当に疑問に思っているのは**クラス**ではなく**オブジェクト**の割り当てとリリースです。他の言語(特にクラスにプロトタイプをモデル化する言語)では、この区別は重要ではありませんが、Objective-Cでは非常に重要です。クラスもオブジェクトであり、オブジェクト自体のオブジェクトの機能を管理します。 –
こんにちはジョナサンありがとう。クラスが作成されていて、クラス自体がそのオブジェクトを持っていて、クラス自体が他のクラスのオブジェクトであると言う場合、クラスYを解放する必要があります。 XでYの作成と破壊 – ashish