Предупреждение: 'UIDevice' может не отвечать на '-isMultitaskingSupported'


Я работаю с новым FBConnect для iPhone. Но я выполнил указанные шаги ... но когда я собираю, он показывает мне это предупреждение «Предупреждение: 'UIDevice' может не реагировать на '-isMultitaskingSupported'», и приложение вылетает. Я использую симулятор iphone 4.1, и он все еще показывает мне это предупреждение. Если кто-нибудь может мне с этим помочь, это будет здорово.

Заранее спасибо.


person insomiac    schedule 20.03.2011    source источник


Ответы (2)


Версии iOS до 4.0 не имеют этого метода, поэтому вы должны использовать respondsToSelector, чтобы сначала проверить наличие метода перед его вызовом.

if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [[UIDevice currentDevice] isMultitaskingSupported]) {
    // Device supports multi-tasking...

}
else {
    // No such luck.
}

Таким образом, пока вы используете симулятор iPhone 4.1, я предполагаю, что вы установили версию iOS на 3.2 (используйте параметр «Версия» в меню «Оборудование», чтобы изменить это).

person John Parker    schedule 20.03.2011
comment
В вашем примере кода вы забыли обработать случай, когда UIDevice отвечает на isMultitaskingSupported, но возвращает false. Кроме того, настройка оборудования в симуляторе не имеет ничего общего с предупреждением. Проверьте цель развертывания iOS в своем проекте или настройках целевой сборки. - person Anomie; 21.03.2011
comment
Спасибо за ответ :) . Поскольку я использовал FBconnect, у которого есть диалоговое окно входа в FBApp. Я попытался проверить, работает ли это с этим новым FBconnect, чтобы я мог использовать его как на 3.2, так и на 4.0. Но я застрял здесь window = [[UIApplication sharedApplication] .windows objectAtIndex: 0]; Здесь происходит сбой приложения .. :(. - person insomiac; 21.03.2011
comment
@Anomie True - я просто пытался проиллюстрировать различные возможные состояния. Тем не менее, я обновлю фрагмент. (В любом случае вы почти всегда будете проверять оба в одном if.) - person John Parker; 21.03.2011
comment
Спасибо за ответ :) . Поскольку я использовал FBconnect, у которого есть диалоговое окно входа в FBApp. Я попытался проверить, работает ли это с этим новым FBconnect, чтобы я мог использовать его как на 3.2, так и на 4.0. Но я застрял здесь window = [[UIApplication sharedApplication] .windows objectAtIndex: 0]; Здесь происходит сбой приложения .. - person insomiac; 21.03.2011
comment
@Aby Если честно, это звучит как другая проблема, поэтому я бы хотел открыть новый вопрос после первого поиска, чтобы увидеть, задавал ли кто-нибудь подобный вопрос раньше. - person John Parker; 21.03.2011
comment
Я уже задавал вопрос, но не получил ответа. Отметьте [здесь] (stackoverflow.com/questions/5225317/) - person insomiac; 21.03.2011

Вы можете добавить ниже упомянутый метод вашего проекта, чтобы проверить, поддерживает ли устройство многопоточность, перед любыми действиями

- (BOOL) isMultitaskingSupported
{
    BOOL result = NO;
    UIDevice *device = [UIDevice currentDevice];

    if (device != nil)
    { 
        if ([device respondsToSelector:@selector(isMultitaskingSupported)] == YES)
        { 
            #ifdef __IPHONE_4_0 
                #if (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_0)
                    result = [device isMultitaskingSupported]; 
                #endif
            #endif
        } 
        return(result);
    }
}

Это вернет Bool, то есть True, если устройство поддерживает многозадачность.

person Kamleshwar    schedule 05.08.2011