Бесплатное образование моста
Существует много типов данных в Базовой платформе Основы и платформе Основы, которая может использоваться взаимозаменяемо. Эта возможность, позвонившее по бесплатному телефону горячей линии образование моста, означает, что можно использовать тот же тип данных в качестве параметра к Базовому вызову функции Основы или как получатель сообщения Objective C. Например, NSLocale
(см. Ссылку класса NSLocale), является взаимозаменяемым ее Базовым дубликатом Основы, CFLocale (см. Ссылку CFLocale). Поэтому в методе, где Вы видите NSLocale *
параметр, можно передать a CFLocaleRef
, и в функции, где Вы видите a CFLocaleRef
параметр, можно передать NSLocale
экземпляр. Вы бросаете один тип к другому для подавления предупреждений компилятора, как проиллюстрировано в следующем примере.
NSLocale *gbNSLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; |
CFLocaleRef gbCFLocale = (CFLocaleRef) gbNSLocale; |
CFStringRef cfIdentifier = CFLocaleGetIdentifier (gbCFLocale); |
NSLog(@"cfIdentifier: %@", (NSString *)cfIdentifier); |
// logs: "cfIdentifier: en_GB" |
CFRelease((CFLocaleRef) gbNSLocale); |
CFLocaleRef myCFLocale = CFLocaleCopyCurrent(); |
NSLocale * myNSLocale = (NSLocale *) myCFLocale; |
[myNSLocale autorelease]; |
NSString *nsIdentifier = [myNSLocale localeIdentifier]; |
CFShow((CFStringRef) [@"nsIdentifier: " stringByAppendingString:nsIdentifier]); |
// logs identifier for current locale |
Отметьте в примере, что функции управления памятью и методы являются также взаимозаменяемыми — можно использовать CFRelease
с Какао возражают и release
и autorelease
с Базовым объектом Основы.
Бесплатное образование моста было доступно начиная с OS X v10.0. Таблица 13-1 обеспечивает список типов данных, которые являются взаимозаменяемыми между Базовой Основой и Основой. Для каждой пары таблица также приводит версию OS X, в котором бесплатное образование моста между ними стало доступным.