import UIKit

CacheProtocol описывает кеш с конкретным типом Value: запись optional-значения, синхронное чтение и чтение через callback.

Короткий ответ

Что ответить на собеседовании

CacheProtocol описывает кеш с конкретным типом Value: запись optional-значения, синхронное чтение и чтение через callback.

Подробный разбор

Ответ с пояснениями

Условие

import UIKit

protocol CacheProtocol { associatedtype Value func setValue(_ value: Value?, forKey key: String) func value(forKey key: String) -> Value? func fetchValue(forKey key: String, completion: @escaping (Value?) -> Void) }

Ответ

CacheProtocol описывает кеш с конкретным типом Value: запись optional-значения, синхронное чтение и чтение через callback.

associatedtype Value связывает тип данных со всей реализацией кеша. Возможная реализация для одного потока:

final class Cache<T>: CacheProtocol {
    private var storage: [String: T] = [:]
    func setValue(_ value: T?, forKey key: String) {
        storage[key] = value
    }
    func value(forKey key: String) -> T? { storage[key] }
    func fetchValue(forKey key: String,
                    completion: @escaping (T?) -> Void) {
        completion(value(forKey: key))
    }
}

Здесь nil означает удаление, хотя сам протокол эту семантику явно не документирует. Callback не обязательно асинхронный: нужны отдельные договорённости об очереди и количестве вызовов. UIKit для этих объявлений не требуется.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее