iPhone Int с NSObject и классом причин не может ссылаться на себя - PullRequest
0 голосов
/ 14 июля 2010

У меня есть функция с именем updateTheValue(), которую я вызывал с помощью [self updateTheValue] некоторое время назад. Две вещи произошли недавно; Я добавил метод, вызывающий метод viewDidLoad(), и он выдал предупреждение о том, что мой класс может не отвечать на это. Во-вторых, я хочу передать объекты в updateTheValue() как строки, но в основном в int, поэтому я объявил объект NSObject для передачи в метод. Может ли int поместиться в слот NSObject или что мне следует использовать вместо него?

Я бы опубликовал их отдельно, но, похоже, они связаны, поскольку после обновления updateTheValue() для принятия NSObject каждая ссылка на эту функцию приводит к ошибке, что мой класс "Может не отвечать на -updateTheValue"

Ответы [ 2 ]

3 голосов
/ 14 июля 2010

Вы можете сделать свой метод так:

-(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 объекты.

1 голос
/ 14 июля 2010

Первая проблема:

updateTheValue () должна быть объявлена ​​до того, как вы попытаетесь ее вызвать.

Вы можете либо переместить определение функции перед вызовами, либо добавить прототип ввверху - например, добавить:

  • (void) updateTheValue;

рядом с верхом.

Вторая проблема:

ИспользованиеNSNumber, например, [NSNumber numberWithInt: 45];

...