Ios 钥匙链/基础内存泄漏

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保存到Keychain(使用ARC)时遇到了一些麻烦

以下是我使用的代码:

+ (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
上出现了泄漏

我想我错过了一些重要的东西。我照做了,但不能解决我的问题。请帮帮我:)