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)