Документация Apple описывает, как KVO реализован внутри компании.
Суть этого в том, что когда вы регистрируете наблюдателя на объекте, платформа динамически создает подкласс исходного класса объекта и настраивает объект для отображения в качестве экземпляра этого нового динамического класса. Это можно увидеть, если осмотреть объект в отладчике после того, как на нем зарегистрирован наблюдатель.
Этот новый класс перехватывает сообщения для объекта и проверяет их на предмет соответствия определенным шаблонам (таким как методы получения, установки и доступа к коллекции).