首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将__bridge类转换为目标-c中的__bridge

如何将__bridge类转换为目标-c中的__bridge
EN

Stack Overflow用户
提问于 2016-05-26 20:34:20
回答 1查看 737关注 0票数 1

我正在尝试实现一个通往SecureTransport C库的快速桥梁。我“认为”只要我知道如何读取sslReadCallback/sslWriteCallback实现中的内容,就可以传递任何连接。这就是我工作的假设。当我查看SSLConnectionRef的定义时,情况似乎是这样的:

代码语言:javascript
复制
/* Opaque reference to an I/O connection (socket, endpoint, etc.) */
public typealias SSLConnectionRef = UnsafePointer<Void>

所以我只需要把我的课变成UnsafePointer。不幸的是,编译器不喜欢我的尝试。有人能给我小费吗?

代码语言:javascript
复制
func startSSLProcess()
{
    self.sslContext = SSLCreateContext(kCFAllocatorDefault, SSLProtocolSide.ClientSide, SSLConnectionType.StreamType)
    if let sslContext = self.sslContext
    {
        SSLSetIOFuncs(sslContext, sslReadCallback, sslWriteCallback)
        SSLSetConnection(sslContext, UnsafePointer(self)) // <-- error
        SSLSetSessionOption(sslContext, SSLSessionOption.BreakOnClientAuth, true)
        SSLHandshake(sslContext)
    }
}

在GCDAsyncSocket中,它这样做:

代码语言:javascript
复制
status = SSLSetConnection(sslContext, (__bridge SSLConnectionRef)self);

代码语言:javascript
复制
SubZeroGCDAsyncSocket *asyncSocket = (__bridge SubZeroGCDAsyncSocket *)connection;

。。拆开。这相当于什么呢?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-30 18:37:07

答案就在这里:

输入快捷键

现在我要做的是:

代码语言:javascript
复制
func startSSLProcess()
{
    self.sslContext = SSLCreateContext(kCFAllocatorDefault, SSLProtocolSide.ClientSide, SSLConnectionType.StreamType)
    if let sslContext = self.sslContext
    {
        SSLSetIOFuncs(sslContext, sslReadCallback, sslWriteCallback)
        SSLSetConnection(sslContext, UnsafePointer(Unmanaged.passUnretained(self).toOpaque()))
        SSLSetSessionOption(sslContext, SSLSessionOption.BreakOnClientAuth, true)
        SSLHandshake(sslContext)
    }
}

我像这样拆开:

代码语言:javascript
复制
    let transportWrapper:SecureTransportWrapper = Unmanaged<SecureTransportWrapper>.fromOpaque(COpaquePointer(connection)).takeUnretainedValue()

用你自己的类型代替SecureTransportWrapper。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37470481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档