このプロトコルは iOS4 より前の非公式なプロトコルであり、基本的にすべてのメソッドが@optional
採用されたプロトコルの宣言は、コンパイラを満足させるだけなので、この場合はそうしないでください。
@interface MyClass: NSObject
そして、コンパイル時にプロトコルに準拠するようにクラスをセットアップしようとするのではなく、実行時にそれを行います。
-(BOOL)conformsToProtocol:(Protocol *)aProtocol
{
NSString *protocolName = NSStringFromProtocol(aProtocol);
if ([protocolName isEqualToString:@"NSXMLParserDelegate"]) {
return YES;
}
return [super conformsToProtocol:aProtocol];
}
-(void)setupParser
{
myParser = [[NSXMLParser alloc] initWithContentsOfURL:whatever];
//cast as id to shut the compiler warning up
myParser.delegate = (id)self;
}
おそらくオーバーライド-(BOOL)conformsToProtocol:(Protocol *)aProtocol
は必要ありませんが、おそらく問題はありません。