Как KVC в Какао проверяет, доступна ли переменная экземпляра? - PullRequest
0 голосов
/ 20 января 2011

Недавно я читал "Шаблоны дизайна какао". Говоря о KVC, он сказал: «KVC проверит, существует ли вначале метод доступа с именем - <<strong> key > или -get <<strong> Key >, если нет, он попробует переменную экземпляра с именем <<strong> клавиша > или _ <<strong> клавиша > ". Может ли среда выполнения obj-c проверить, существует ли переменная экземпляра? Я думаю, что это можно сделать только во время компиляции ...

Любые ответы приветствуются ^ _ ^

1 Ответ

1 голос
/ 20 января 2011

Это действительно может. Соответствующей документацией для этого является Справочник по Objective-C Runtime ; в частности, class_getInstanceVariable. Часть, которую пропускает документация, состоит в том, что эта функция возвращает NULL, когда экземпляры класса не имеют такой переменной.

KVC, по-видимому, передает класс объекта и имена переменных-кандидатов этой функции, и первое имя, для которого среда выполнения получает Ivar, - это имя, которое оно использует.

...