TyphoonAssembly не собирает объекты, предоставленные как @Property

Я хотел бы определить все объекты, которые моя сборка может собирать через свойства вместо общедоступных методов (причина ниже). Проблема, которую я вижу, заключается в том, что когда я вызываю [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 не предоставляет мне никакой информации о типе возвращаемого значения (только если это объект), поэтому без этого я не могу знать, соответствует ли он определенному протоколу. .

Есть ли причина, по которой я не могу этого сделать? Это известный баг? Это сделано так намеренно?


person iOSAddicted    schedule 08.05.2016    source источник


Ответы (1)


Кажется, я нашел причину проблемы. Когда создается экземпляр сборки, все свойства сборки также обрабатываются как сборки. Я предполагаю, что сборки должны иметь свойства только в том случае, если их свойства являются другими сборками. Есть ли причины, по которым Typhoon не позволяет иметь сборки с другими свойствами, кроме сборок? Если их нет, должен ли я сообщить об ошибке с просьбой проверить, является ли свойство подклассом TyphoonAssembly?

Я внес изменения в свою рабочую область, и теперь я могу без проблем вызывать все геттеры для своего свойства, и оно больше не идентифицирует мое свойство как сборку, это просто XYZPropertyClass :)

person iOSAddicted    schedule 08.05.2016