iOS KeychainItemWrapper中的内存泄漏

Ser*_*ity 5 iphone memory-leaks keychain ios

我正在使用Apple的示例代码中的KeyChainItemWrapper来存储用户密码以进行身份​​验证,但是当我调用它来设置密码时:

   [keychain setObject:passwordField.text forKey:(id)kSecValueData];
Run Code Online (Sandbox Code Playgroud)

它在我的衬衫上传递了记忆泄漏.问题显然是追溯到KeyChainItemWrapper.m中的第274行,这是:

if (SecItemCopyMatching((CFDictionaryRef)genericPasswordQuery, (CFTypeRef *)&attributes) == noErr)
{
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题,将来在使用Apple示例代码时应该更加小心?

注意:我可以发布更多代码,但我已经使用Instruments将问题缩小到这一行,并且任何开发人员都可以使用完整的示例代码.

Rob*_*ier 5

查看KeyChainItemWrapper的代码,我同意这行是内存泄漏.他们[attributes release]在最后错过了writeToKeychain.查看SecItemCopyMatching()此文件中的所有其他调用,以获取有关它们如何正确释放返回引用对象的示例.

我会使用本页底部的"这是好的,但是......"链接来记录错误.