他のいくつかのプロジェクトで問題なく使用したコードを使用しています。突然、同じコードを使用するとランダムなエラー メッセージが表示されますが、特定の 1 つのプロジェクトでのみ発生します。
このコードは、他のいくつかのプロジェクトで完全に実行されました。
@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 のリストを削除すると、すべてが改善されました。