(または1つのデリゲートを持つ1つのクラスでさえ)同じデリゲートを持つ複数のクラスをリリースするにはどうすればよいですか?
私はDataGetterという名前のクラスがあります。このクラスはWebからファイルをダウンロードします。これは、ファイルがダウンロードされたときにトリガされますデリゲートメソッドを、持っている:
- (void) dataGetterFinished:(DataGetter *)dataGetter;
だから、somehere私のコードでは、私はそうのようにダウンロードするために、いくつかのファイルを設定することができます
打ち鳴らすの静的を使用して// in AViewController.m
DataGetter *blueFile = [[DataGetter alloc] init];
blueFile.delegate = self;
[blueFile getData:@"http://example.com/blue-file"];
DataGetter *redFile = [[DataGetter alloc] init];
redFile.delegate = self;
[redFile getData:@"http://example.com/red-file"];
アナライザでは、上の各alloc行は、 '行に割り当てられたオブジェクトの潜在的なリーク...'エラーを取得します。だから私はどのようにオブジェクトをリリースするだろう。デリゲートがあるため、ハングアップする必要があります。だから、そう
- (void) dataGetterFinished:(DataGetter *)dataGetter
{
// code
[dateGetter release];
}
のように、dataGetterFinishedメソッドの最後の行としてそれを解放するためにOKです...または私は何とかにautoreleaseを使用すべきですか?
ありがとう!デリゲートメソッドでクラスを解放するのではなく、NSMutableArrayを使用する利点は何ですか?それは単にclangの神々を喜ばせることですか? – cannyboy
そうだと思いますが、後でdataGettersにアクセスしたい場合は、配列を調べるだけです。私はいつも、それをやるよりずっとやさしい方法だと感じました。 –