Во-первых, какой объект протекает?
Инструменты скажут вам это; какой именно объект протекает и на какую строку кода он был выделен.
Как только вы это сделаете, вам следует включить «счетчик ссылок на треки» в инструменте «Распределения» и посмотреть последовательность удержаний / выпусков.
В опубликованном вами коде нет утечки. Скорее всего, существует переменная экземпляра, которая не равна release
d в dealloc
или , когда вы переопределяете переменную без предварительного release
старого значения.
т.е:.
id foo = [Foo new];
foo = [Bar new]; // this leaks the Foo instance
foo = [Baz new]; // this leaks the Bar instance
<Ч />
Когда вы включаете запись подсчета ссылок, что удерживает и выпускает просочившийся словарь?
(Вы также можете включить «Отслеживать только активные распределения» при отслеживании утечек.)
<Ч />
Aha! Теперь мы куда-то добираемся!
Итак, протекший объект - это NSCFString
; NSString
для всех намерений и целей.
У вас есть эта строка кода:
ajustesCredencialesTableViewController.password = [credenciales objectForKey:@"password"];
Итак, где вы release
вводите строку, назначенную свойству password
? Предполагая, что ваше свойство пароля определено как retain
или copy
(оно должно быть copy
), вам нужно его где-то освободить.
Обратите внимание, что вы никогда не должны хранить пароли . Никогда не. Хеш пароль с солью и хранить его вместо этого.