Objective c XCode编译器警告:';类别';可能不响应';方法';

Objective c XCode编译器警告:';类别';可能不响应';方法';,objective-c,ios,xcode,Objective C,Ios,Xcode,我正试图摆脱一个不断出现的警告 这是我的WordListTableViewController.m的一部分 #import "WordListTableViewController.h" #import "XMLReader.h" @implementation WordListTableViewController - (void)viewDidLoad { [superviewDidLoad]; NSDictionary *status = [_mainDictionary

我正试图摆脱一个不断出现的警告

这是我的WordListTableViewController.m的一部分

#import "WordListTableViewController.h"
#import "XMLReader.h"
@implementation WordListTableViewController

- (void)viewDidLoad
{
    [superviewDidLoad];
    NSDictionary *status = [_mainDictionary retrieveForPath:@"Dealers"];
}

@end
#import "NSMutableDictionary+XMLReaderNavigation.h";
XMLReader.h文件:

#import <Foundation/Foundation.h>
@interface XMLReader : NSObject <NSXMLParserDelegate]] >
{
    NSMutableArray *dictionaryStack;
    NSMutableString *textInProgress;
    NSError **errorPointer;
}
+ (NSMutableDictionary *)dictionaryForPath:(NSString *)path error:(NSError **)errorPointer;
+ (NSMutableDictionary *)dictionaryForXMLData:(NSData *)data error:(NSError **)errorPointer;
+ (NSMutableDictionary *)dictionaryForXMLString:(NSString *)string error:(NSError **)errorPointer;
@end

@interface NSMutableDictionary (XMLReaderNavigation)
- (id)retrieveForPath:(NSString *)navPath;
@end    
#导入
@接口XMLReader:NSObject
{
NSMutableArray*dictionaryStack;
NSMutableString*textInProgress;
N错误**错误指针;
}
+(NSMutableDictionary*)dictionaryForPath:(NSString*)路径错误:(NSError**)errorPointer;
+(NSMutableDictionary*)字典FORXMLDATA:(NSData*)数据错误:(NSError**)错误指针;
+(NSMutableDictionary*)dictionaryForXMLString:(NSString*)字符串错误:(NSError**)错误指针;
@结束
@接口NSMutableDictionary(XMLReaderNavigation)
-(id)retrieveForPath:(NSString*)导航路径;
@结束
我得到的警告是:

警告:语义问题:“NSDictionary”可能不会响应“retrieveForPath:”

它确实响应得很好,但我不知道如何组织我的头,以便编译器知道将响应什么


非常感谢您的帮助:)

您的类别
NSMutableDictionary(XMLReaderNavigation)
已添加到NSMutableDictionary,而不是NSDictionary。实际上,在运行时,该方法确实存在于实际分配的对象上,因此它被成功调用。但从编译器的角度来看,NSDictionary实际上并不响应retrieveForPath方法。

好吧,您的类别
NSMutableDictionary(XMLReaderNavigation)
被添加到NSMutableDictionary,而不是NSDictionary。实际上,在运行时,该方法确实存在于实际分配的对象上,因此它被成功调用。但从编译器的角度来看,NSDictionary实际上不响应retrieveForPath方法。

答案很简单,您提供的类别扩展了NSMutableDictionary,而您发送消息的对象是NSDictionary类的实例

答案很简单,您提供的类别扩展了NSMutableDictionary,而您发送消息的对象是NSDictionary类的实例

只需导入WordListTableViewController.m的类别即可

#import "WordListTableViewController.h"
#import "XMLReader.h"
@implementation WordListTableViewController

- (void)viewDidLoad
{
    [superviewDidLoad];
    NSDictionary *status = [_mainDictionary retrieveForPath:@"Dealers"];
}

@end
#import "NSMutableDictionary+XMLReaderNavigation.h";

只需导入WordListTableViewController.m的类别

#import "WordListTableViewController.h"
#import "XMLReader.h"
@implementation WordListTableViewController

- (void)viewDidLoad
{
    [superviewDidLoad];
    NSDictionary *status = [_mainDictionary retrieveForPath:@"Dealers"];
}

@end
#import "NSMutableDictionary+XMLReaderNavigation.h";

哦,天哪,那太尴尬了:谢谢!哈!我在这个发展“事件”中所有的“尴尬”时刻都会填满一本书!祝你好运有趣的是,由于巧合,它会在运行时工作;您的应用程序中从来没有NSDictionary或NSMutableDictionary的实例。这两个都有一个子类,分别为其中一个实例化,并对实例进行了适当的配置!哈!我在这个发展“事件”中所有的“尴尬”时刻都会填满一本书!祝你好运有趣的是,由于巧合,它会在运行时工作;您的应用程序中从来没有NSDictionary或NSMutableDictionary的实例。两者都有一个子类,为其中一个实例化,并对实例进行了适当的配置。