【问题标题】:iPhone performSelector changes object typeiPhone performSelector 更改对象类型
【发布时间】:2010-01-21 00:51:51
【问题描述】:

我有一个带有 -(void)fire 方法的回调类,它调用
[target performSelector:selector withObject:dictionary];
就在那一行之前,我添加了NSLog(@"%@", [[dictionary class] description]); 以查看对象更改的位置,调试时返回 NSCFDictionary。

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

我调用 performSelector 后,这个对象变成 NSString 有什么原因吗?

【问题讨论】:

  • 选择器调用的方法的方法签名是什么?
  • 我不太清楚你的意思
  • @selector(TokenHandler:TokenData:)?

标签: iphone nsstring callback nsdictionary


【解决方案1】:

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

查看 performSelector:withObject:withObject: 或使用 NSInvocation。

【讨论】:

  • 哦,实际上,我很抱歉,我的代码不在我身边。实际的选择器是使用 @selector(TokenHandler:) 分配的
  • 第一个参数有类型(NSDictionary*)?但是在方法内部,对象将自己标识为 NSString?
  • 它实际上是 (id),但是是的,它被标识为 NSString。我只是想它可能会变成(NSDictionary *),尽管很高兴知道它为什么这样做并将其保留为(id)
  • id 很好,我只是好奇。我认为您将不得不发布更多代码。我同意你的问题很奇怪。
猜你喜欢
  • 1970-01-01
  • 2016-04-15
  • 2011-03-08
  • 1970-01-01
  • 2013-07-04
  • 2011-03-11
  • 2019-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多