簡體   English   中英

TyphoonAssembly沒有組裝以@Property提供的對象

[英]TyphoonAssembly not assembling Objects provided as @Property

我想定義我的程序集可以通過屬性而不是公共方法組裝的所有對象(下面的原因)。 我看到的問題是,當我調用[XYZAssembly getXYZProperty]我的程序集無法組裝這些對象。 而不是XYZProperty的實例我得到TyphoonDefinition: class='XYZPropertyClass', key='(null)', scope='Unknown

例如在我的Header文件中:

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

在我的實現文件中:

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

為什么我要走這條路而不是在沒有@Properties的情況下創建公共方法? 我的目標是使用OBJC Runtime,這樣我就可以檢索屬性的類,我正在尋找的符合特定協議,它的名稱,訪問器選擇器等等......擁有所有這些信息我基本上可以說,[XYZAssembly performSelector(@selector(無論屬性的選擇器是什么)]。OBJC Runtime沒有提供任何關於返回類型的信息(只有它的一個Object),所以沒有它我不知道它是否符合特定的協議。

我有什么理由不這樣做嗎? 這是一個眾所周知的錯誤? 故意這樣做?

我想我找到了造成這個問題的原因。 在實例化程序集時,程序集中的所有屬性也將被視為程序集。 我假設如果Assemblies屬性是其他Assemblies,那么Assemblies應該只有屬性。 Typhoon不允許將Assemblies與Assemblies以外的其他屬性一起使用是否有任何理由? 如果沒有,我應該提交一個錯誤,要求檢查該屬性是否是TyphoonAssembly的子類?

我在自己的工作區中進行了更改,現在我可以毫無問題地調用我的屬性的所有getter,並且它不再將我的屬性識別為程序集,它只是一個XYZPropertyClass :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM