2016-05-08 3 views
1

Я хотел бы определить все объекты, которые моя сборка может собирать с помощью свойств вместо общедоступных методов (причина ниже). Проблема, которую я вижу, заключается в том, что когда я вызываю [XYZAssembly getXYZProperty], мои сборки не могут собирать эти объекты. Вместо экземпляра XYZProperty я получаю TyphoonDefinition: class='XYZPropertyClass', key='(null)', scope='UnknownTyphoonAssembly сборка Объекты, предоставляемые как @Property

Например, в моем файле заголовка:

@property (nonatomic, strong, getter=getXYZProperty) XYZPropertyClass *XYZProperty 

И в моем файле реализации:

-(XYZPropertyClass *)getXYZProperty { 
    return [TyphoonDefinition withClass:[XYZPropertyClass class]]; 
} 

Почему я иду по этому пути, вместо создания публичные методы без @Properties? Моя цель здесь - использовать OBJC Runtime, чтобы я мог получить класс свойства, соответствующий конкретный протокол, который я ищу, его имя, его селектор доступа и т. Д. Имея всю эту информацию, я могу в принципе сказать: [XYZAssembly performSelector (@selector (независимо от селектора свойств)]. OBJC Runtime не предоставляет мне никакой информации о типе возврата (только если это объект Object), поэтому без этого я не могу знать, соответствует ли он определенному протоколу .

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

ответ

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^