Я не понимаю какого-либо поведения в моем коде. Я определил перечисление как таковой в верхней части моей .m файл:с использованием перечисления как объекта в PerformSelector: WithObject:
typedef NS_ENUM (NSInteger, connectionState) {
tryingToConnect,
connecting,
disconnecting
};
Дальше мой код я вызываю метод:
[self performSelector:@selector(animateForState:) withObject:tryingToConnect afterDelay:1.5];
Это работает прекрасно.
Но если я называю то же самое с «подключением» или «отключением»:
[self performSelector:@selector(animateForState:) withObject:connecting afterDelay:1.5];
Xcode предупреждает меня, что «неявное преобразование из„NSInteger“(он же„INT“) в„ид“отвергается с ARC». Почему верхняя переменная enum (tryToConnect) работает, а не следующие (подключение/отключение) в моем определении типа?
Ради включая все это то, что метод, называемый выглядит следующим образом:
- (void)animateForState:(connectionState)state{
switch (state) {
case tryingToConnect:{
NSLog(@"trying to connect");
break;
}
case connecting:{
NSLog(@"connecting");
break;
}
case disconnecting:{
NSLog(@"disconnecting");
break;
}
default:
break;
}
}
Aaah У меня была умение иметь дело с первым значением 0, но не поняла, что это эквивалентно пропуску ноль ... Большое спасибо @rdelmar, он отлично работает! – Audioy