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

时间:2012-06-21 21:45:12

标签: iphone objective-c ios cocoa-touch nsxmlparser

当我按照以下方式声明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];

如何删除这两个?谢谢

1 个答案:

答案 0 :(得分:17)

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

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

@interface AppDelegate() <NSXMLParserDelegate>
@end

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

[xmlParser setDelegate:self];