Бесплатное образование моста

Существует много типов данных в Базовой платформе Основы и платформе Основы, которая может использоваться взаимозаменяемо. Эта возможность, позвонившее по бесплатному телефону горячей линии образование моста, означает, что можно использовать тот же тип данных в качестве параметра к Базовому вызову функции Основы или как получатель сообщения 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, в котором бесплатное образование моста между ними стало доступным.

Табличные 13-1  Типы данных, которые могут использоваться взаимозаменяемо между Базовой Основой и Основой

Базовый тип Основы

Фундаментальный класс

Доступность

CFArrayRef

NSArray

OS X v10.0

CFAttributedStringRef

NSAttributedString

OS X v10.4

CFCalendarRef

NSCalendar

OS X v10.4

CFCharacterSetRef

NSCharacterSet

OS X v10.0

CFDataRef

NSData

OS X v10.0

CFDateRef

NSDate

OS X v10.0

CFDictionaryRef

NSDictionary

OS X v10.0

CFErrorRef

NSError

OS X v10.5

CFLocaleRef

NSLocale

OS X v10.4

CFMutableArrayRef

NSMutableArray

OS X v10.0

CFMutableAttributedStringRef

NSMutableAttributedString

OS X v10.4

CFMutableCharacterSetRef

NSMutableCharacterSet

OS X v10.0

CFMutableDataRef

NSMutableData

OS X v10.0

CFMutableDictionaryRef

NSMutableDictionary

OS X v10.0

CFMutableSetRef

NSMutableSet

OS X v10.0

CFMutableStringRef

NSMutableString

OS X v10.0

CFNumberRef

NSNumber

OS X v10.0

CFReadStreamRef

NSInputStream

OS X v10.0

CFRunLoopTimerRef

NSTimer

OS X v10.0

CFSetRef

NSSet

OS X v10.0

CFStringRef

NSString

OS X v10.0

CFTimeZoneRef

NSTimeZone

OS X v10.0

CFURLRef

NSURL

OS X v10.0

CFWriteStreamRef

NSOutputStream

OS X v10.0