Я хотел бы определить все объекты, которые моя сборка может собирать с помощью свойств вместо общедоступных методов (причина ниже). Проблема, которую я вижу, заключается в том, что когда я вызываю [XYZAssembly getXYZProperty]
, мои сборки не могут собирать эти объекты. Вместо экземпляра XYZProperty я получаю TyphoonDefinition: class='XYZPropertyClass', key='(null)', scope='Unknown
TyphoonAssembly сборка Объекты, предоставляемые как @Property
Например, в моем файле заголовка:
@property (nonatomic, strong, getter=getXYZProperty) XYZPropertyClass *XYZProperty
И в моем файле реализации:
-(XYZPropertyClass *)getXYZProperty {
return [TyphoonDefinition withClass:[XYZPropertyClass class]];
}
Почему я иду по этому пути, вместо создания публичные методы без @Properties? Моя цель здесь - использовать OBJC Runtime, чтобы я мог получить класс свойства, соответствующий конкретный протокол, который я ищу, его имя, его селектор доступа и т. Д. Имея всю эту информацию, я могу в принципе сказать: [XYZAssembly performSelector (@selector (независимо от селектора свойств)]. OBJC Runtime не предоставляет мне никакой информации о типе возврата (только если это объект Object), поэтому без этого я не могу знать, соответствует ли он определенному протоколу .
есть ли причина, почему я не могу сделать это? это известная ошибка? это делается так, что намеренно?