iPhone performSelector更改对象类型

iPhone performSelector更改对象类型,iphone,nsstring,callback,nsdictionary,Iphone,Nsstring,Callback,Nsdictionary,我有一个回调类,其方法是-(void)fire,它调用 [目标性能选择器:带对象的选择器:字典] 就在那一行之前,我添加了NSLog(@“%@,[[dictionary class]description])查看对象更改的位置,调试时返回NSCFDictionary 所以一切都很好。接下来,我添加了一行类似的代码来获取被调用方法中的参数类型。现在,在调试时,它返回NSCFString,而回调记录NSCFDictionary 调用performSelector后,是否有任何原因导致此对象成为NSS

我有一个回调类,其方法是
-(void)fire
,它调用
[目标性能选择器:带对象的选择器:字典]
就在那一行之前,我添加了
NSLog(@“%@,[[dictionary class]description])查看对象更改的位置,调试时返回NSCFDictionary

所以一切都很好。接下来,我添加了一行类似的代码来获取被调用方法中的参数类型。现在,在调试时,它返回NSCFString,而回调记录NSCFDictionary


调用performSelector后,是否有任何原因导致此对象成为NSString?

如果使用performSelector:withObject:,则只能向方法传递一个参数


请检查performSelector:withObject:withObject:或使用NSInvocation。

您的选择器正在调用的方法的方法签名是什么?我不太确定您选择的是什么mean@selector(TokenHandler:TokenData:)?哦,事实上,我很抱歉,我的代码还没放在身边。实际的选择器是使用@selector(TokenHandler:)分配的,第一个参数的类型是(NSDictionary*)?但是在方法内部,对象将自己标识为NSString?它实际上是(id),但是是的,它被标识为NSString。我只是想,它可能会成为(NSDictionary*),尽管知道它为什么这样做会很好,并且保持它为(id)id很好,我只是好奇。我认为您将不得不发布更多的代码。我同意你的问题很奇怪。