在Objective-C中将类对象设置为另一个类的属性

时间:2014-01-22 10:43:19

标签: objective-c class properties strong-references

我对Objective C很新,所以也许这很简单,但我构建了一个类,它将存储一个类引用。这就是我在.h文件中的内容:

@property (nonatomic, assign) Class *filterClass;

我感到很糟糕的是,我无法将类对象分配给此类的实例,我可以将它们添加到数组或变量中:

Filter *filter1 = [[Filter alloc] init];
filter1.title = @"Sepia";
filter1.filterClass = [GPUImageSepiaFilter class];

我收到错误:

  

“将Objective-C指针隐式转换为'__unsafe_unretained   ARC不允许使用Class *'

似乎它希望filterClass属性很强但是也给出了错误,因为据我所知,你不能将原始类型定义为强。显然我可以将字符串存储为类的引用并使用-NSClassFromString,但是如果我可以只传递类对象,那将会很好。因为我可以把它们放在数组中,看起来它应该是可能的。如果我完全错了,请告诉我。

1 个答案:

答案 0 :(得分:4)

属性声明必须是

@property (nonatomic, assign) Class filterClass;

而不是

@property (nonatomic, assign) Class *filterClass;

请检查此回答Objective-c - Class Keyword