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