IBOutlet
- #define
d в виде пустой строки ; это не имеет никакого эффекта ни во время компиляции, ни во время выполнения. Его единственная цель - позволить Интерфейсному Разработчику просматривать файлы заголовков и видеть, какие ivars следует использовать в качестве соединений. Единственный способ определить, какие ивары были объявлены как IBOutlet
s, - это также выполнить некоторую текстовую обработку файла заголовка любого класса, с которым вы работаете.
Что касается свойств, я не уверен, что есть другой способ, кроме как подняться по списку суперклассов и получить все их свойства. Вы можете вызвать class_getSuperclass
в цикле, чтобы получить всю родословную вашего класса; * функция возвращает Nil
, когда вы вызываете ее с корневым классом (NSObject
) в качестве аргумента.
* См., Например, этот SO-ответ моего.