Xcode"AppDelegate*const __strong'到不兼容类型的参数"错误

Jau*_*ume 4 iphone cocoa-touch objective-c nsxmlparser ios

当我appDelegate按如下方式声明接口以进行设置时NSXMLParserDelegate,我从其他使用[[UIApplication sharedApplication]委托]的视图中收到一些警告;

@interface AppDelegate : UIResponder <UIApplicationDelegate, NSXMLParserDelegate>
Run Code Online (Sandbox Code Playgroud)

警告:使用不兼容类型"id"的表达式初始化"AppDelegate*__ strong"

但是,如果我删除它,由于xmlParser的自设置,会出现另一个警告,

@interface AppDelegate : UIResponder <UIApplicationDelegate>
Run Code Online (Sandbox Code Playgroud)

警告:将'AppDelegate*const __strong'发送到不兼容类型'id'的参数

    xmlParser = [[NSXMLParser alloc] initWithData:receivedData];
    [xmlParser setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

如何删除?谢谢

Dav*_*d V 17

你真的不应该让你的AppDelegate公开暴露接口.它在您的所有代码之间创建非常紧密的耦合.如果其他代码(在AppDelegate之外)需要NSXMLParserDelegate,则应为其创建不同的类.

看起来你的AppDelegate需要成为一个委托用于它自己的目的.您可以通过在AppDelegate.m文件中创建类扩展来"私下"实现该接口.

@interface AppDelegate() <NSXMLParserDelegate>
@end
Run Code Online (Sandbox Code Playgroud)

执行上述操作将删除您在此处收到的警告:

[xmlParser setDelegate:self];
Run Code Online (Sandbox Code Playgroud)