0

我有一个函数updateTheValue(),我已经调用[self updateTheValue]了一段时间了。最近发生了两件事;我在方法中添加了调用viewDidLoad()方法,它发出警告说我的班级可能对此没有响应。其次,我想将对象传递给updateTheValue()喜欢的字符串,但主要是整数,所以我声明了一个 NSObject 来传递给方法。int 可以放入 NSObject 插槽,还是应该使用什么来代替?

我会单独发布这些,但它们似乎是相关的,因为在更新updateTheValue()以接受 NSObject 之后,对这个函数的每个引用都会导致我的类“可能不响应 -updateTheValue”的错误

4

2 回答 2

3

你可以让你的方法是这样的:

-(void)updateTheValue:(NSObject *)anObject
// or use -(void)updateTheValue:(id)anObject
{
   if ([anObject isKindOfClass:[NSString class]]) {
      // Do your string handling here
   }
   else if ([anObject isKindOfClass:[NSNumber class]]) {
      // Do your number handling here
   }
}

像这样使用它:

[self updateTheValue:[NSNumber numberWithInt:42]];

不过,我建议使用两种不同的方法,即使updateTheValueWithInt:updateTheValueWithString:更易于阅读和理解。

确保在使用它们之前使方法签名可见,以便编译器知道这是做什么的。

如果您使用单独的方法,您可以int直接使用而不将它们包装到NSNumber对象中。

于 2010-07-14T07:46:49.997 回答
1

第一个问题:

updateTheValue() 必须在您尝试调用它之前声明。

您可以在调用它之前移动函数的定义,或者在顶部添加一个原型 - 例如,添加:

  • (void) updateTheValue;

靠近顶部。

第二个问题:

使用 NSNumber,例如 [NSNumber numberWithInt:45];

于 2010-07-14T07:43:33.907 回答