My header file is defined like this:
#import <Foundation/Foundation.h>
@interface Warning: NSObject {
In my .m file I do:
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
This compiles and works just fine under 3.0.
If I try to compile with 4.0 I get this error:
does not implement the 'NSXMLParserDelegate' protocol
If I add:
@interface Warning: NSObject <NSXMLParserDelegate> {
It compiles fine with 4.0, but when I try to compile with 3.0 I get:
error: cannot find protocol declaration for 'NSXMLParserDelegate'
The Foundation framework is found correctly. Adding NSXMLParser.h doesn't help.
Any help would be appreciated.
Thanks
According to the library reference documentation, NSXMLParser doesn't require a strict NSXMLParserDelegate implementation :
- (void)setDelegate:(id)delegate
- (id)delegate
NSXMLParser checks needed delegate methods availability on the fly.
If NSXMLParser was requiring a NSXMLParserDelegate full implementation, the accessors would be :
- (void)setDelegate:(id<NSXMLParserDelegate>)delegate
- (id<NSXMLParserDelegate>)delegate
I guess that's why there is no NSXMLParserDelegate protocol actually defined in the framework.
So, that interface seems correct to me :
#import <Foundation/Foundation.h>
@interface Warning: NSObject {
All you have to do is implement the delegate methods you need for.
Edit :
You could try using preprocessor macros to activate or deactivate the protocol usage declaration :
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0
@interface Warning: NSObject <NSXMLParserDelegate>
#else
@interface Warning: NSObject
#endif
{
// interface definition ...
I didn't try this with 4.0, but it worked on another example between 3.1 and 3.2
I was able to fix this with:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0
@protocol NSXMLParserDelegate
@end
#endif
@interface Warning: NSObject <NSXMLParserDelegate>
Just be sure to implement the appropriate methods in your implementation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With