2012-01-24 5 views
-2

クラスインスタンスのメソッドを呼び出すと、そのメソッドに関連付けられたデリゲートメソッドが起動しないという構造的な理由はありますか?関連するメソッドが内部的に呼び出された場合にのみ、委任メソッドが呼び出されるようです。

クラスA:

-(void)methodB //public 
{ 
    NSURLConnection *url = [[NSURLConnection alloc]init]; 
    url.delegate = self; 
    [url start]; 
} 

- (void)connection: (NSURLConnection *)connection didReceiveResponse: (NSURLResponse *)response //delegate Method C 
{ 
    NSLog (@"Connection worked"); 
} 

クラスX内のいくつかの方法:

ClassA *littleA = [[ClassA alloc] init]; 
[littleA methodB]; 

問題がconnection:didReceiveResponse:が呼び出されていないということです。

ただし、ClassAのインスタンスメソッド内から[self methodB]を実行すると、明らかに動作します。

+0

を言ったこれは、少なくともいくつかのダミーコードなしで従うことが少し難しいです。あなたはメソッド 'M'を再実装していますか、スーパークラスの実装を使用していますか?あなたはどこから 'D'が呼ばれることを期待していますか? –

+1

'methodB'と' methodC'の関係を明確にできますか? – aqs

+0

私はちょうど質問を危険にさらした、私はクラスのインスタンスを意味するとき、私はサブクラス、申し訳ありません、私はまだ学んでいると言っていた。 – Eric

答えて

1

あなたがデリゲートを設定していないので、NSURLConnectionのデリゲートメソッドが呼び出さ取得されていないが、接続

NSURLConnection *url = [[NSURLConnection alloc]init]; 
url.delegate = self; 
[url start]; 
+0

結果には影響しないようです。私もその問題を更新しました。インスタンス化されたクラスで自己を使用するのと同じ方法で、私がそれを呼び出すクラスに変換していないのでしょうか? – Eric

+0

あなたがそれを見逃しているかどうかわかりませんが、NSURLConnectionのURLも設定する必要があります – arclight

関連する問題