udi*_*udi 1 objective-c unsafe-pointers ios swift
我正在从Swift的目标C类中调用函数。
-(char *)decrypt:(char *)crypt el:(int)el{}
Run Code Online (Sandbox Code Playgroud)
从swift调用此函数时,它要求提供一个UnsafeMutablePointer<Int8>作为参数“ crypt”的值
“ crypt”的值来自服务器,它是base64编码的字符串。因此,我对该字符串进行了解码,并得到了一个Data对象。
let resultData = Data(base64Encoded: base64String)
Run Code Online (Sandbox Code Playgroud)
现在,我需要将此数据传递给上述函数。我试图将此Data对象转换为UnsafeMutablePointer<Int8>
resultData?.withUnsafeBytes { (u8Ptr: UnsafeMutablePointer<Int8>) in
let decBytes = tea?.decrypt(u8Ptr , el: el)}
Run Code Online (Sandbox Code Playgroud)
但是它没有编译。给出以下错误
“ UnsafeMutablePointer”不能转换为“ UnsafePointer <_>”
我对目标c不太了解。因此,谁能帮助我将此参数传递给目标c函数。
您必须更改UnsafeMutablePointer为 UnsafePointer
不安全指针
resultData?.withUnsafeBytes {(bytes: UnsafePointer<CChar>)->Void in
//Use `bytes` inside this closure
}
Run Code Online (Sandbox Code Playgroud)
不安全的可变指针
var data2 = Data(capacity: 1024)
data2.withUnsafeMutableBytes({ (bytes: UnsafeMutablePointer<UInt8>) -> Void in
//Use `bytes` inside this closure
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3903 次 |
| 最近记录: |