2

NSObjectとして作成したクラスがあります。このクラスには、さまざまなタイプやメソッドなどのプロパティがいくつかあります。

このクラスをアプリでインスタンス化すると(たとえば、メインのView Controllerで)、使用が終了するとすぐにリリース呼び出しを送信します。すなわち:

MyObject *myObject = [[MyObject alloc] initWithParameters:parms];
[myObject doSomeMethodCall];
[myObject release];

だから私の質問は:myObjectをリリースすると、MyObject .hファイルで宣言したすべての宣言されたオブジェクトや変数などが自動的にリリースされますか?

また

これらすべてをリリースするカスタムリリースメソッドを作成する必要がありますか?

メモリ管理の問題があるのでお願いします。

ありがとうございました。

4

4 に答える 4

5

オブジェクトにメソッドを実装し、deallocそのメソッドを使用して所有しているリソースを解放する必要があります。

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html#//apple_ref/doc/uid/20000043-SW4

- (void)dealloc {
    [mainSprocket release];
    [auxiliarySprocket release];
    [super dealloc];
}

重要な注意事項: オブジェクトに対して dealloc メソッドを呼び出すことはありません。クリーンアップするときにランタイムによって自動的に呼び出されます。

于 2010-08-30T14:59:41.073 に答える
0

最終的には、myObjectのdeallocメソッドを呼び出します。myObjectのdeallocメソッドでは、myObjectが持つすべてのインスタンス変数を解放する必要があります。また、忘れないでください[super dealloc]

于 2010-08-30T14:56:04.453 に答える
0

iPhoneから- viewcontroller の dealloc はいつ呼び出されますか? :

オブジェクトへの最後の参照が解放されると、Dealloc が実行されます。

したがって、オブジェクトを解放すると、dealloc が実行されます。したがって、すべてのリリースなどをオブジェクトの dealloc メソッドに入れます。

于 2010-08-30T14:55:14.903 に答える
0

と同じ問題があり、それは通話Zigglzworthの位置でした。[super dealloc]メソッドの開始時に-(void)deallocそれがあり、毎回クラッシュを引き起こしていました。[super dealloc]変数 release ステートメントの後にメソッドの最後に移動したところ、問題なく動作するようになりました。

于 2011-10-25T01:27:17.140 に答える