-(void)fire
メソッドを持つコールバッククラスがあり、
[target performSelector:selector withObject:dictionary];
その行の直前にNSLog(@"%@", [[dictionary class] description]);
オブジェクトが変更された場所を確認するために呼び出します。デバッグ時にNSCFDictionaryが返されます。
だからそれはすべて大丈夫だった。次に、同様の行を追加して、呼び出されているメソッド内の引数タイプを取得しました。これで、デバッグ時にNSCFStringが返され、コールバックはNSCFDictionaryをログに記録します。
PerformSelectorを呼び出すと、このオブジェクトがNSStringになる理由はありますか?