Ios 钥匙链/基础内存泄漏
我知道,在这个主题上有很多问题,但是我在将NSString保存到Keychain(使用ARC)时遇到了一些麻烦 以下是我使用的代码:Ios 钥匙链/基础内存泄漏,ios,memory-management,keychain,foundation,Ios,Memory Management,Keychain,Foundation,我知道,在这个主题上有很多问题,但是我在将NSString保存到Keychain(使用ARC)时遇到了一些麻烦 以下是我使用的代码: + (NSString *)getStringForKey:(NSString *)aKey { NSMutableDictionary *searchDictionary = [self DictionaryForKey:aKey]; NSString *stringValue; [searchDictionary setObject:
+ (NSString *)getStringForKey:(NSString *)aKey
{
NSMutableDictionary *searchDictionary = [self DictionaryForKey:aKey];
NSString *stringValue;
[searchDictionary setObject:(__bridge id)kSecMatchLimitOne forKey:(__bridge id)kSecMatchLimit];
[searchDictionary setObject:(id)kCFBooleanTrue forKey:(__bridge id)kSecReturnData];
CFTypeRef result = NULL;
OSStatus statusCode = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, &result);
if (statusCode == errSecSuccess)
{
NSData *resultData = CFBridgingRelease(result);
stringValue =[[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
}
return stringValue;
}
+ (void)setString:(NSString *)string forKey:(NSString *)aKey
{
if (string != nil) {
NSData *encodedData = [string dataUsingEncoding:NSUTF8StringEncoding];
NSMutableDictionary *keyDictionary = [self DictionaryForKey:aKey];
[keyDictionary setObject:encodedData forKey:(__bridge id)kSecValueData];
SecItemAdd((__bridge CFDictionaryRef)keyDictionary, nil);
}
}
我发现有时候getStringForKey:
返回nil(可能是100的1倍)。配置文件显示每次调用此方法时内存泄漏
我还尝试使用[NSKeyedUnarchiver unarchiveObjectWithData:]
,但同样的问题也出现了-在NSKeyedUnarchiver
上出现了泄漏
我想我错过了一些重要的东西。我照做了,但不能解决我的问题。请帮帮我:)