Статический анализ сообщает о потенциальной утечке объекта в методе resetKeychainItem, строка 191, KeyChainItemWrapper.m.Удивительно, но он не сообщает о потенциальной утечке в области, указанной выше, хотя я добавил освобождение объекта в соответствии с предложением и для корректности.
Вот код с сообщаемой утечкой:
- (void)resetKeychainItem
{
...
// Default attributes for keychain item.
[keychainItemData setObject:@"" forKey:(id)kSecAttrAccount]; // <-- Potential leak of an object
[keychainItemData setObject:@"" forKey:(id)kSecAttrLabel];
[keychainItemData setObject:@"" forKey:(id)kSecAttrDescription];
// Default data for keychain item.
[keychainItemData setObject:@"" forKey:(id)kSecValueData];
}
Об этой проблеме сообщается в пустой строке @ "".Я пробовал различные реализации кода, чтобы попытаться «исправить» эту проблему, но, похоже, ничего не работает.
Является ли это ложным срабатыванием?
Обновление: сразу после публикации я понял, что яможно дважды щелкнуть предупреждение, чтобы отследить ошибку.
Это предупреждение относится к строке над ним для выделения словаря:
if (!keychainItemData)
{
self.keychainItemData = [[NSMutableDictionary alloc] init];
}
Я изменил код на следующий:
if (!keychainItemData)
{
self.keychainItemData = [[[NSMutableDictionary alloc] init] autorelease];
}
Предупреждение анализатора больше не отображается.