Я пытаюсь написать приложение для iOS, которое будет использовать функции iOS 4.0, но также будет работать на более ранней версии ОС (3.1.3). Я установил цель развертывания 3.1.3, а базовый SDK - 4.3 (последний)
В частности, я пытаюсь воспользоваться возможностью перехвата команд с пульта дистанционного управления.
Приведенный ниже документ очень полезен для объяснения того, как (во время выполнения) проверять наличие классов и методов, но я все еще получаю ошибку компилятора при попытке ссылки на перечисление из класса UIEvent, который появляется только в iOS 4.0 и более поздние версии.
http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3
Вот фрагмент кода, который приводит к сбою компиляции:
- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[self playPauseAction:nil];
break;
case UIEventSubtypeRemoteControlPreviousTrack:
[self previousChapter:nil];
break;
case UIEventSubtypeRemoteControlNextTrack:
[self nextChapter:nil];
break;
default:
break;
}
}
}
Компилятор жалуется, что:
error: 'UIEventTypeRemoteControl' undeclared (first use in this function)
UIEventTypeRemoteControl - это перечисление, которое не определено до 4.0
(из UIEvent.h)
typedef enum {
UIEventTypeTouches,
UIEventTypeMotion,
UIEventTypeRemoteControl,
} UIEventType;
typedef enum {
// available in iPhone OS 3.0
UIEventSubtypeNone = 0,
// for UIEventTypeMotion, available in iPhone OS 3.0
UIEventSubtypeMotionShake = 1,
// for UIEventTypeRemoteControl, available in iOS 4.0
UIEventSubtypeRemoteControlPlay = 100,
UIEventSubtypeRemoteControlPause = 101,
UIEventSubtypeRemoteControlStop = 102,
UIEventSubtypeRemoteControlTogglePlayPause = 103,
UIEventSubtypeRemoteControlNextTrack = 104,
UIEventSubtypeRemoteControlPreviousTrack = 105,
UIEventSubtypeRemoteControlBeginSeekingBackward = 106,
UIEventSubtypeRemoteControlEndSeekingBackward = 107,
UIEventSubtypeRemoteControlBeginSeekingForward = 108,
UIEventSubtypeRemoteControlEndSeekingForward = 109,
} UIEventSubtype;
Так, как мне остановить компилятор, жалующийся на это?
Также - как мне остановить предупреждения компилятора о том, что someClass может не отвечать на someMethod (где я проверяю во время выполнения, действительно ли этот класс отвечает на метод перед его вызовом.) Я полагаю, что мог бы отключить это предупреждение в настройки компилятора, но в других случаях это полезное предупреждение.
Спасибо