当我按照以下方式声明appDelegate
接口以设置NSXMLParserDelegate
时,我收到来自使用[[UIApplication sharedApplication]委托]的其他视图的一些警告;
@interface AppDelegate : UIResponder <UIApplicationDelegate, NSXMLParserDelegate>
警告:使用表达式初始化'AppDelegate * __ strong' 不兼容的类型'id'
但是,如果我将其删除,则会因xmlParser的自设置而出现另一个警告
@interface AppDelegate : UIResponder <UIApplicationDelegate>
警告:将'AppDelegate * const __strong'发送到参数 不兼容的类型'id'
在
xmlParser = [[NSXMLParser alloc] initWithData:receivedData];
[xmlParser setDelegate:self];
如何删除这两个?谢谢
答案 0 :(得分:17)
你真的不应该让你的AppDelegate公开暴露界面。它在您的所有代码之间创建非常紧密的耦合。如果其他代码(在AppDelegate之外)需要NSXMLParserDelegate,则应该为它创建一个不同的类。
看起来你的AppDelegate需要成为一个委托用于自己的目的。您可以通过在AppDelegate.m文件中创建类扩展来“私下”实现该接口。
@interface AppDelegate() <NSXMLParserDelegate>
@end
执行上述操作将删除您在此处收到的警告:
[xmlParser setDelegate:self];