Objective-C反射-获取NSArray的通用类型

时间:2020-07-11 09:54:32

标签: objective-c reflection

我目前正在尝试在Objective-C中读取具有反射的类的属性。 我的NSArray可以很好地工作。

这是我的财产:

<embed type="text/html" src="mypage.html" width="100%" height="100%">

我可以使用以下方法成功访问班级的属性:

@property(nonatomic) NSArray<CustomObject*>* tabs;

所以我的财产名称是标签。都好。但是属性是“ T @” NSArray“,&,N,V_tabs”

如何获取有关NSArray的通用类型的信息? 提前谢谢

1 个答案:

答案 0 :(得分:0)

除非您的NSArray的indexedSubscript(也称为[index])没有存储任何内容,否则它为空,只有Xcode知道您的意图,您想要在其中存储什么类型。

如此

@property(nonatomic) NSArray<CustomObject*>* tabs;

等同于

@property(nonatomic) NSArray<NSObject*>* tabs;

等同于

@property(nonatomic) NSArray<id>* tabs;

等同于

@property(nonatomic) NSArray* tabs;

上面的列表不是100%正确的,因为当您尝试混合数据类型并尝试进行编译时,Xcode可能会引发错误,因此它不应达到存储错误数据类型的地步。

除非未分配任何对象,否则它不会占用内存,因此无法在运行时询问它。

如果在设计模式中很重要,则可以创建自己的数据类型,该数据类型可以通过indexedSubscripts进行访问,并且即使是 empty ,也可以保留打算保留的数据类型的信息。但是值得考虑的是,这是否仍然是适合您想要实现的设计模式。

相关问题