When I declare appDelegate
interface as follows in order to set NSXMLParserDelegate
, I receive some warnings from other views that are using [[UIApplication sharedApplication] delegate];
@interface AppDelegate : UIResponder <UIApplicationDelegate, NSXMLParserDelegate>
warning: Initializing 'AppDelegate *__strong' with an expression of incompatible type 'id'
However, if I remove it, another warning appears due to self setting of xmlParser,
@interface AppDelegate : UIResponder <UIApplicationDelegate>
warning: Sending 'AppDelegate *const __strong' to parameter of incompatible type 'id'
on
xmlParser = [[NSXMLParser alloc] initWithData:receivedData];
[xmlParser setDelegate:self];
How to remove both? thank you
You really should not be making your AppDelegate publicly exposing interfaces. It creates very tight coupling between all your code. If other code (outside your AppDelegate) is needing an NSXMLParserDelegate you should make a different class for it.
It looks like your AppDelegate is needing to be a delegate for its own purposes. You can "privately" implement the interface by making a class extension in your AppDelegate.m file.
@interface AppDelegate() <NSXMLParserDelegate>
@end
Doing the above will remove the warning you received here:
[xmlParser setDelegate:self];