我想在 Swift 中进行 RSA 加密,但我在这一行遇到了一个奇怪的错误:
var publicKey:SecKeyRef = KeyFormatter.getPublicKeyReference("com.apple.sample.publickey")
通常,在 Objective-C 中它没问题,'getPublicKeyReference' 方法返回一个 SecKeyRef 对象。但是当我根据 Swift 语法在 Swift 文件中键入它时,它会给我错误消息“Unmanaged is not convertible to SecKey”。
KeyFormatter 类仍然是用 Objective-C 编写的。因此,当我调用此方法(到桥接 header )时,返回类型在 Swift 中的表示方式不同吗?如果是这样,我该如何克服这个问题?
最佳答案
参见将 Swift 与 Cocoa 和 Objective-C 结合使用 -> Working with Cocoa Data Types -> 一直向下滚动到“核心基础”。
因为特定 API 当前未针对内存管理语义进行审核,您将需要调用 takeUnretainedValue()
或 takeRetainedValue()
,具体取决于该 API 的内存管理语义具体方法。
关于objective-c - 非托管 <SecKey> 不可转换为 SecKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24890632/