【发布时间】:2020-01-27 10:34:58
【问题描述】:
我在 iOS 13 中对钥匙串访问感到困惑。
CFDataRef passwordData = NULL;
OSStatus keychainError = noErr;
keychainError = SecItemCopyMatching((__bridge CFDictionaryRef)returnDictionary,
(void *)&passwordData);
NSString *password = [[NSString alloc] initWithBytes:[(__bridge_transfer NSData *)passwordData bytes] length:[(__bridge NSData *)passwordData length] encoding:NSUTF8StringEncoding];
执行上述代码段后,密码变量值为
{length=32,bytes=0xf3388feaa238e92da01a21fdc477921c...2f021935af7f1883},,,,,,,,
但在 iOS 12 及更早版本中,我可以获得密码变量的预期值。
而且这只发生在带有 iOS 13 的 xcode 11 中
重新编辑: 这和钥匙串无关,都是从 NSData 描述方法发生的
【问题讨论】:
-
我认为没有必要将其连接到
NSData。尝试改用 CoreFoundation 方法CFDataGetBytePtr()和CFDataGetLength(),不要忘记释放它,因为它看起来像你现在的泄漏。 -
似乎是NSData中“描述”方法的变化。您在某些时候正在这样做,但它失败了。参照。 twitter.com/nshipster/status/1173657903070203905
-
是的,你纠正了 NSData 在 XCode 11 中做一些新的事情
-
从这里找到解决方案:stackoverflow.com/questions/8798725/…
标签: objective-c push-notification nsstring ios13 xcode11