5

当我appDelegate如下声明接口以设置NSXMLParserDelegate时,我收到来自使用 [[UIApplication sharedApplication] delegate] 的其他视图的一些警告;

@interface AppDelegate : UIResponder <UIApplicationDelegate, NSXMLParserDelegate>

警告:使用不兼容类型“id”的表达式初始化“AppDelegate *__strong”

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

@interface AppDelegate : UIResponder <UIApplicationDelegate>

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

    xmlParser = [[NSXMLParser alloc] initWithData:receivedData];
    [xmlParser setDelegate:self];

如何删除两者?谢谢你

4

1 回答 1

18

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

看起来您的 AppDelegate 需要成为其自身目的的代表。您可以通过在 AppDelegate.m 文件中创建类扩展来“私下”实现接口。

@interface AppDelegate() <NSXMLParserDelegate>
@end

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

[xmlParser setDelegate:self];
于 2012-06-21T21:59:50.130 回答