Согласно справочной документации библиотеки, NSXMLParser не требует строгой реализации NSXMLParserDelegate:
- (void)setDelegate:(id)delegate
- (id)delegate
NSXMLParser проверяет доступность необходимых методов делегата на лету.
Если бы NSXMLParser требовал полной реализации NSXMLParserDelegate, средства доступа были бы:
- (void)setDelegate:(id<NSXMLParserDelegate>)delegate
- (id<NSXMLParserDelegate>)delegate
Полагаю, именно поэтому в платформе не определен протокол NSXMLParserDelegate.
Итак, этот интерфейс мне кажется правильным:
#import <Foundation/Foundation.h>
@interface Warning: NSObject {
Все, что вам нужно сделать, это реализовать методы делегата , которые вам нужны.
Редактировать:
Вы можете попробовать использовать макросы препроцессора для активации или деактивации декларации использования протокола:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0
@interface Warning: NSObject <NSXMLParserDelegate>
#else
@interface Warning: NSObject
#endif
{
// interface definition ...
Я не пробовал это с 4.0, но он работал на другом примере между 3.1 и 3.2