NSURLConnection リクエストを処理するクラスを構築しています。他のクラスがこのクラスを使用できるようにするには、connectionDidFinishLoading が起動されたときにメイン クラスがデリゲートを呼び出せるようにします。
多くのドキュメントを調べましたが、明確な例を示すものは何も見つかりません。コードは何らかの理由でデリゲートを呼び出していません。私がこれまでに持っているコードは次のとおりです(関連性のないコードは削除されました):
インターフェース:
@interface PDUrlHandler : NSObject {
id delegate;
}
- (void)searchForItemNamed:(NSString *)searchQuery;
@property (nonatomic, assign) id delegate;
@end
@interface NSObject (PDUrlHandlerDelegate)
- (void)urlHandler:(PDUrlhandler*)urlHandler searchResultsFinishedLoading:(NSDictionary *)resultData;
@end
実装:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"Fininshed Loading...");
resultData = [self parseJSON:jsonData];
if(delegate && [delegate respondsToSelector:@selector(urlHandler:searchResultsFinishedLoading:)]) {
NSLog(@"Delegating!");
[delegate urlHandler:self searchResultsFinishedLoading:resultData];
} else {
NSLog(@"Not Delegating. I dont know why.");
}
}
他のクラス内のデリゲート:
- (void)urlHandler:(PDUrlhandler*)urlHandler searchResultsFinishedLoading:(NSDictionary *)resultData;
{
NSLog(@"Delegating!!!!");
}