使用ARC不允许使用指向'CFReadStreamRef*'的Objective-C指针的间接指针

6 objective-c core-foundation multiple-indirection foundation automatic-ref-counting

我想CFStreamCreatePairWithSocketToHostNSInput- 和OutputStreams.我有两个伊娃NSInputStream *_inputStreamNSOutputStream *_outputStream.

以下给出了两条错误消息:

CFStreamCreatePairWithSocketToHost(NULL,
  (__bridge_retained CFStringRef)self.hostname, self.port,
  (CFReadStreamRef *)&_inputStream, (CFWriteStreamRef *)&_outputStream);
Run Code Online (Sandbox Code Playgroud)

错误:一个间接指针的浇铸到一个Objective-C指针" CFReadStreamRef *"(又名" struct __CFReadStream **')是不允许与ARC
错误:一个间接指针的浇铸到一个Objective-C指针’ CFWriteStreamRef *"(又名" struct __CFWriteStream **")是不允许的同ARC

我该如何解决这个问题?我试过使用__bridge但是我得到了类似的错误消息.

jus*_*tin 4

传递一个指向实际CFReadStreamRefCFWriteStreamRef变量的指针,然后在分配给你的 NSTypes 时进行强制转换。基本上:

CFThingRef cfThing = NULL;
CFFunctionGetThing(&cfThing);
NSThing * nsThing = cfThing;
Run Code Online (Sandbox Code Playgroud)

当然,您必须添加适当的桥接转换并为cfThing.