我正在使用我在其他几个项目中使用过的代码,没有发生任何事故。突然,我在使用相同的代码时收到随机错误消息 - 但仅限于一个特定项目。
此代码已在其他几个项目中完美运行:
@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”不是可识别的选择器。
(编辑/已解决):调试器实际上并没有抱怨代码 - 而是断点:关于无法找到以前放置在那里的断点的东西。删除 Xcode 的项目断点列表使一切变得更好。