Получить все предметы в цепочке для ключей за один выстрел?
Я начал читать этот пример яблока для цепочки для ключей и понял, что они выбирают все значения для этого элемента цепочки для ключей, связанные с типом kSecAttrGeneric. Затем, когда кто-то пытается найти ключ, который он делает, он формирует кэшированное значение, является ли это правильным подходом, я почему-то чувствую, что этот способ предварительной выборки неверен.
Пожалуйста, дайте мне знать, что может быть причиной предварительной загрузки всех данных из цепочки для ключей, а не для получения доступа к ним напрямую из цепочки для ключей в зависимости от необходимости.
https://developer.apple.com/library/ios/samplecode/GenericKeychain/Introduction/Intro.html
2 ответа
Я полагаю, вы немного неправильно истолковали этот пример. В GenericKeychain они не выбирают "все элементы". Они выбирают только один предмет и его одно значение. Элемент цепочки для ключей состоит из свойств, которые являются полуобщественными, и "значения", которое защищено. Чтение из цепочки для ключей фантастически дорого (намного, намного медленнее, чем чтение файла с диска; это действительно шокирующе медленно). Таким образом, пример избегает перечитывания, когда это не нужно. Но это не чтение всей цепочки для ключей; только один элемент, который хранит свои данные.
Это связано с эффективностью. Чтение с диска стоит дорого, поэтому, если вы собираетесь читать цепочку для ключей несколько раз, более эффективно считывать всю цепочку для ключей, а затем копаться в памяти.