Как только я вызываю setPathToNetworkImage и загружает изображение, оно попадает в глобальный кеш?
Да. По умолчанию он попадает в глобальный кэш изображений Nimbus в памяти. Вот что происходит в фоновом режиме: как только изображение загружается и до того, как изображение возвращается в поток пользовательского интерфейса, необработанное изображение сохраняется в кеше диска [1]. Как только поток загрузки возвращается, необработанное изображение устанавливается в UIImageView, и необработанное изображение также сохраняется в кеше в памяти.
Достаточно ли умен, чтобы понять, что это то же самое изображение, если мы создадим другой networkImageView с тем же pathToNetworkImage и, таким образом, избежим сетевого запроса?
Да. Пока он имеет все те же настраиваемые свойства [2], он сразу же загрузит изображение из кэша в памяти, если оно существует. Вы можете увидеть, как генерируется ключ кэша изображения здесь: https://github.com/jverkoey/nimbus/blob/master/src/networkimage/src/NINetworkImageView.m#L144
[1] Это потому, что сохранение на диск является операцией блокировки, которую мы не хотим блокировать потоком пользовательского интерфейса.
[2] Если у вас два просмотра сетевых изображений, загружающих один и тот же URL-адрес, но один из них имеет другой режим содержимого, то изображение необходимо будет обработать дважды, поскольку ключи кэша в памяти будут отличаться. При этом для ключа кэша диска используется только URL-адрес изображения, поэтому в конечном итоге мы попадем в сеть только один раз, кешируем изображение, а затем при втором просмотре сетевого изображения загрузим изображение с диска и обрежем его вместе с другим контентом. режим.
В сторону: похоже, что документация для двух свойств кеша не работает, поэтому мне придется это исправить.