Использование делегатов для классов iphone 3.0 в более старых версиях, особенно MKReverseGeocoderDelegate

Мне интересно, что происходит, когда я использую MKReverseGeocoderDelegate в моем ViewController, но приложение работает в 2.2.1. Потому что я поддерживаю 2.2.1, но использую 3.0 в качестве базового SDK.

Я уже добавил фреймворк в качестве мягкой ссылки для поддержки работы над 2.2.1, и я понимаю, что должен подготовить код, чтобы проверить, доступен ли класс MKReverseGeocoder для выполнения всей причудливой работы с геокодером, но я просто не могу понять если делегат приведет к сбою приложения на 2.2.1, потому что оно не существует. Вот как я проверяю, существует ли класс:

// Try to found location
Class geocoderClass = NSClassFromString(@"MKReverseGeocoder");
if (geocoderClass != nil)
{ // Do my stuff here 
}

Но я должен объявить в файле заголовка, чтобы использовать делегата для geocodeClass. Мне интересно, как это работает. Нужно ли мне делать что-нибудь еще для подготовки этого кода?

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate, MKReverseGeocoderDelegate> {
// My declarations here
}

Спасибо Леонардо


person Homer1980ar    schedule 24.08.2009    source источник


Ответы (1)


Ваш код в порядке. Сказать, что класс соответствует протоколу, - это способ сделать это, поэтому он правильно компилируется в версии 3.0 и не дает сбоев в более старых версиях.

Методы делегата просто не будут вызываться при запуске в 2.2.

person pgb    schedule 24.08.2009