【发布时间】:2014-10-27 18:06:30
【问题描述】:
代码复制自这篇博文:http://matthewpalmer.net/blog/2014/06/21/example-ios-keychain-swift-save-query/
我以前有这个代码:
// Search for the keychain items
let status: OSStatus = SecItemCopyMatching(keychainQuery, &dataTypeRef)
// The following line crashes with an EXEC_BAD_ACCESS if dataTypeRef is nil
var opaque = dataTypeRef!.toOpaque()
当我在钥匙串查询中使用新帐户值运行上述操作时,dataTypeRef 将是 nil,这会导致 EXEC_BAD_ACCESS。
我试图通过检查dataTypeRef 是否为nil 来规避这种情况:
var opaque = COpaquePointer.null()
if (dataTypeRef != nil) {
opaque = dataTypeRef!.toOpaque() // This line should not be executed.
}
虽然调试器显示dataTypeRef 是nil,但它仍然会进入 if 子句并崩溃。
谁能解释这里发生了什么?我确实有 Objective-C 方面的经验,但我不知道这里发生了什么。
【问题讨论】: