Вы должны просто иметь возможность вызвать release
в массиве.release
освободит массив и освободит содержимое, как в Какао.
В этом случае не возникает вопроса, как выпустить CF / NS-Array, и вам не нужно беспокоиться овремя жизни элементов до освобождения контейнера.
Даже если отправка от SecKeychainRef
до CFRelease
была незаконной, вы все равно должны ожидать, что это сработает, потому что система должна делать правильные вещи.API-интерфейсы сбора и распределения CoreFoundation обеспечивают достаточный контроль над обратными вызовами распределителя и хранилища, поэтому инфраструктура безопасности должна делать правильные вещи даже в случае , когда содержимое массива не было совместимо с поведением по умолчанию (в данном случае CFRelease
)).Они могли бы предоставить свои собственные обратные вызовы и распределители.Поскольку я не вижу документации, в которой говорится об очевидном отклонении от поведения по умолчанию, я предполагаю, что безопасно вызывать release
для массива и что элементы либо совместимы с процедурами подсчета ссылок CF, либо что коллекция использует собственный распределительи / или схема обратного вызова (предоставляемая Security) и будет очищать элементы по мере необходимости (я думаю, что первый).