XCode编译器警告:'class'可能无法响应'method'

时间:2011-07-21 16:15:46

标签: objective-c ios xcode

我正试图摆脱一直不断弹出的警告。

这是我的WordListTableViewController.m

的一部分
#import "WordListTableViewController.h"
#import "XMLReader.h"
@implementation WordListTableViewController

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

@end

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    

我得到的警告是:

警告:语义问题:'NSDictionary'可能无法响应'retrieveForPath:'

它确实响应得很好,但我无法弄清楚如何组织我的标题,以便编译器知道会响应什么...

真的很感激一些帮助:)

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

只需要为您的WordListTableViewController.m

导入您的类别
#import "NSMutableDictionary+XMLReaderNavigation.h";