ios – 如何在Swift 3中使用UnsafeMutablePointer?

我有以下代码写在 Swift 2.2中:
let keyData = NSMutableData(length: 64)!
SecRandomcopyBytes(kSecRandomDefault,64,UnsafeMutablePointer<UInt8>(keyData.mutableBytes))

XCode 8强调第二行并声称

Cannot invoke initializer for type ‘UnsafeMutablePointer<_>’ with an
argument list of type ‘(UnsafeMutableRawPointer)’

虽然我感谢XCode告诉我,我不太明白如何更改UnsafeMutableRawPointer是可以接受的.

有谁知道如何将此代码转换为Swift 3?

解决方法

我建议您在Swift 3中使用Data而不是NSData.
var keyData = Data(count: 64)
let result = keyData.withUnsafeMutableBytes {mutableBytes in
    SecRandomcopyBytes(kSecRandomDefault,keyData.count,mutableBytes)
}

withUnsafeMutableBytes(_ :)被声明为通用方法,因此,在这种简单的情况下,可以使用它而不指定元素类型.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...