私のパーサーは、doneParsingObjects を完全に正常に呼び出す MWFeedParserDelegate delagate を使用します
@interface Parser ()<MWFeedParserDelegate>
...
-(void) doneParsingObjects{
NSLog(@"test");
}
別のクラスでパーサーを割り当てた場合、デリゲート メソッド doneParsingObjects が呼び出されることはありません。
Parser * newsParser = [[Parser alloc]init];
デリゲートを別のクラスに追加できることはわかっていますが、デリゲートを実装するパーサー オブジェクトを開始したときに、デリゲート メソッドがトリガーされない理由を知りたいです。
/* my View Controller */
@implementation getSourceAndTopicViewController
- (void)viewDidLoad
{
[super viewDidLoad];
Parser * newsParser = [[Parser alloc]init];
newsParser.dataSource = self;
NSURL * feedURL = [NSURL URLWithString:@"http://news.yahoo.com/rss/"];
[newsParser parseURL:feedURL];
}
/* this method never gets called. Don't know why */
-(void) Parser:(parserViewController *)parser doneParsingObjects:(NSMutableArray *)parsedItems{
NSLog(@"Method was called");
}
_______________________________________
/* Parser.h Class */
@class Parser;
@protocol ParserDataSource
-(void) Parser:(Parser *)parser doneParsingObjects:(NSMutableArray *)parsedItems;
@end
@interface Parser : NSObject
@property (nonatomic, weak)id <ParserDataSource > dataSource;
/* Parser.m
I'd like to call my own datasource method in the viewController once MWFeedParser calls back feedParserDidFinish */
@interface Parser ()<MWFeedParserDelegate>{
MWFeedParser *feedParser;
}
...
@end
@implementation Parser
...
/* This method is supposed to be called by the MWFeedParserDelegate but never gets triggered from my view controller when I instantiate newParser */
- (void)feedParserDidFinish:(MWFeedParser *)parser {
NSLog(@"%@", self.MWFeedItems);
[self.dataSource Parser:self doneParsingObjects:self.parsedItems;
}
ビュー コントローラーで MWFeedParserDelegate を使用すると、この問題が解決されることはわかっていますが、パーサーを MWFeedParserDelegate を処理するパーサーにしたいと考えています。