自发的“NSCFString encodeBytes:length:forKey:unrecognized selector”exception

时间:2013-01-22 06:21:03

标签: objective-c nsmutabledictionary static-members

我正在使用我在其他几个项目中使用的代码而没有发生任何事故。突然间,我在使用相同的代码时收到随机错误消息 - 但只在一个特定的项目中。

此代码在其他几个项目中运行良好:

@implementation MyClass

static NSMutableDictionary *elements;

+(void) initialize {
    if (!elements)
        elements = [NSMutableDictionary new];
}

+(void) MyFunction: (some parameters) {
    NSString *class_name = NSStringFromClass([self class]);
    NSMutableArray *elementList = [elements valueForKey: class_name];
}

更改了一些内容,现在[elements valueForKey:]调用会生成以下错误消息:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: NSCFString encodeBytes:length:forKey: unrecognized selector sent to instance

它实际上比那更奇怪。如果我逐步执行+(void)初始化,我会看到元素以nil开头,然后按预期设置为NSMutableDictionary。但是,即使在创建该实例之后,对[elements valueForKey:[any NSString]]的任何调用都会导致“NSCFString encodeBytes”不是可识别选择器的相同错误。

(EDIT /已解决):调试器实际上并没有抱怨代码 - 而是断点:关于无法找到之前放置的断点的事情。删除Xcode的项目断点列表使它变得更好。

1 个答案:

答案 0 :(得分:0)

调试器实际上并没有抱怨代码 - 而是断点:关于无法找到之前放置的断点的事情。删除Xcode的项目断点列表使它变得更好。