Я бы, вероятно, избавился от кода initXMLParser.Вместо этого я бы сделал контроллер представления переменной экземпляра и установил бы его при инициализации вашего анализатора.
MyParser *parser = [[MyParser alloc] init];
[parser setViewController:self];
Другой подход состоит в том, чтобы сделать ваш ViewController делегатом MyParser.В MyParser.h вы можете объявить некоторые методы делегата:
@protocol MyParserDelegate
- (void)foundBooks:(NSMutableArray *)booksArray;
- (void)foundBook:(Book *)aBook;
@end
@interface MyParser {
id<MyParserDelegate> delegate;
NSMutableArray *bookArray;
Book *aBook;
...
}
@end
Тогда ваш контроллер представления будет делегатом:
@interface ViewController : UIViewController <MyParserDelegate> {
...
}
@end
А в ViewController.m вы будете реализовывать foundBooks: иfoundBook :.
Затем в вашем парсере вы вызываете методы делегата:
if([elementName isEqualToString:@"Books"]) {
[self.delegate foundBooks:bookArray];
...
}
if([elementName isEqualToString:@"Book"]) {
[self.delegate foundBook:aBook];
...
}