Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xcode "AppDelegate *const __strong' to parameter of incompatible type" error

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

like image 910
Jaume Avatar asked Dec 04 '22 03:12

Jaume


1 Answers

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];
like image 197
David V Avatar answered Jan 05 '23 00:01

David V