TyphoonAssembly 不组装作为@属性 提供的对象
TyphoonAssembly not assembling Objects provided as @Property
我想通过属性而不是 public 方法来定义我的程序集可以 assemble 的所有对象(原因如下)。我看到的问题是,当我调用 [XYZAssembly getXYZProperty]
时,我的程序集无法 assemble 这些对象。我得到的不是 XYZProperty 的实例 TyphoonDefinition: class='XYZPropertyClass', key='(null)', scope='Unknown
例如在我的头文件中:
@property (nonatomic, strong, getter=getXYZProperty) XYZPropertyClass *XYZProperty
在我的实现文件中:
-(XYZPropertyClass *)getXYZProperty {
return [TyphoonDefinition withClass:[XYZPropertyClass class]];
}
为什么我要走这条路而不是创建没有 @Properties 的 public 方法?我的目标是使用 OBJC 运行时,这样我就可以检索 属性 的 Class、我正在寻找的符合特定协议、它的名称、它的访问器选择器等......拥有所有这些我基本上可以说的信息,[XYZAssembly performSelector(@selector(无论 属性 的选择器是什么)]。OBJC 运行时不向我提供有关 return 类型的任何类型的信息(仅当它是对象),所以没有它我无法知道它是否符合特定协议。
我有什么理由不能这样做吗?这是一个已知的错误?是故意这样的吗?
我想我已经找到导致问题的原因。当程序集被实例化时,程序集中的所有属性也被视为程序集。我假设只有当它们的属性是其他程序集时,程序集才应该有属性。 Typhoon 是否有任何理由不允许具有除程序集以外的其他属性的程序集?如果没有,我是否应该提交一个错误,要求检查 属性 是否是 TyphoonAssembly 的子类?
我在自己的工作区中进行了更改,现在我可以毫无问题地为我的 属性 调用所有 getter,而且它不再将我的 属性 识别为程序集,它只是一个 XYZPropertyClass :)
我想通过属性而不是 public 方法来定义我的程序集可以 assemble 的所有对象(原因如下)。我看到的问题是,当我调用 [XYZAssembly getXYZProperty]
时,我的程序集无法 assemble 这些对象。我得到的不是 XYZProperty 的实例 TyphoonDefinition: class='XYZPropertyClass', key='(null)', scope='Unknown
例如在我的头文件中:
@property (nonatomic, strong, getter=getXYZProperty) XYZPropertyClass *XYZProperty
在我的实现文件中:
-(XYZPropertyClass *)getXYZProperty {
return [TyphoonDefinition withClass:[XYZPropertyClass class]];
}
为什么我要走这条路而不是创建没有 @Properties 的 public 方法?我的目标是使用 OBJC 运行时,这样我就可以检索 属性 的 Class、我正在寻找的符合特定协议、它的名称、它的访问器选择器等......拥有所有这些我基本上可以说的信息,[XYZAssembly performSelector(@selector(无论 属性 的选择器是什么)]。OBJC 运行时不向我提供有关 return 类型的任何类型的信息(仅当它是对象),所以没有它我无法知道它是否符合特定协议。
我有什么理由不能这样做吗?这是一个已知的错误?是故意这样的吗?
我想我已经找到导致问题的原因。当程序集被实例化时,程序集中的所有属性也被视为程序集。我假设只有当它们的属性是其他程序集时,程序集才应该有属性。 Typhoon 是否有任何理由不允许具有除程序集以外的其他属性的程序集?如果没有,我是否应该提交一个错误,要求检查 属性 是否是 TyphoonAssembly 的子类?
我在自己的工作区中进行了更改,现在我可以毫无问题地为我的 属性 调用所有 getter,而且它不再将我的 属性 识别为程序集,它只是一个 XYZPropertyClass :)