Вы почти никогда не должны пытаться понять, удерживать счет Вы просто запутаетесь.
Все, что действительно имеет значение, это то, что вы отпускаете объект столько раз, сколько его удерживали. Вы уверены, что setData:
является сохраняемой собственностью? Это синтезированный или заказной? Вы можете опубликовать это?
Вы выводите счет удержания array
, но вы передали results
в setData:
. Это разные объекты. Если вы действительно хотите проверить сохраняемые значения (что, вероятно, не следует), вы должны проверить значение results
.
filteredArrayUsingPredicate:
возвращает объект автоматического освобождения (вы можете сказать, потому что имя метода не начинается с "alloc", "new", "copy" или "mutableCopy" - см. Документы для получения дополнительной информации). Поэтому вам определенно следует сохранить его, и если setData:
действительно является свойством retain, этот код должен работать нормально.