Я переношу приложение из Objective-C в Swift, и мне нужно использовать следующий метод:
CFStreamCreatePairWithSocketToHost(alloc: CFAllocator!, host: CFString!, port: UInt32, \
readStream: CMutablePointer<Unmanaged<CFReadStream>?>, \
writeStream: CMutablePointer<Unmanaged<CFWriteStream>?>)
Старая логика выглядит так (что несколько веб-сайтов, похоже, согласны):
CFReadStreamRef readStream = NULL;
CFWriteStreamRef writeStream = NULL;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)(host), port, \
&readStream, &writeStream);
NSInputStream inputStream = (__bridge_transfer NSInputStream *)readStream;
NSOutputStream outputStream = (__bridge_transfer NSOutputStream *)writeStream;
Это прекрасно работает благодаря бесплатному мостику. Однако ARC не существует в "Swift-space", и система типов изменилась.
Как превратить мои потоки в экземпляры
CMutablePointer<Unmanaged<CFReadStream>?>, and
CMutablePointer<Unmanaged<CFWriteStream>?>
И затем преобразовать их обратно в подклассы NSStream
после вызова CFStreamCreatePairWithSocketToHost
?