Альтернативы слабой связи в iPhone SDK? - PullRequest
4 голосов
/ 16 июня 2010

Я хочу сделать мое приложение совместимым со старыми версиями iPhone OS.Я видел слабые ссылки, упомянутые в качестве опции.Могу ли я использовать код определения версии ОС, чтобы избежать блоков кода, которые ОС не может обработать?(Скажите iAD?)

if(OS >= 4.0){
//set up iADs using "NDA code"...
} 

Если да, то что вместо if(OS >= 4.0)?

1 Ответ

15 голосов
/ 16 июня 2010

У вас должно быть слабое связывание с новыми фреймворками. Наряду с этим вы должны проверять наличие новых API, используя такие методы как NSClassFromString, respondsToSelector, instancesRespondToSelector и т. Д.

Например. Слабая связь с MessageUI.framework (старый пример, но все еще актуальный)

Сначала проверьте, существует ли класс MFMailComposerController:

Class mailComposerClass = NSClassFromString(@"MFMailComposerController");
if (mailComposerClass != nil)
{
    // class exists, you can use it
}
else
{
    // class doesn't exist, work around for older OS
}

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

if (&UIApplicationWillEnterBackgroundNotification != nil)
{
    // go ahead and use it
}

Если вам нужно знать, можете ли вы использовать новые методы в уже существующем классе, вы можете сделать:

if ([existingInstance respondsToSelector:@selector(someSelector)])
{
    // method exists
}

И так далее. Надеюсь, это поможет.

...