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

Rya*_*yan 5 properties class objective-c strong-references

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

@property (nonatomic, assign) Class *filterClass;
Run Code Online (Sandbox Code Playgroud)

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

Filter *filter1 = [[Filter alloc] init];
filter1.title = @"Sepia";
filter1.filterClass = [GPUImageSepiaFilter class];
Run Code Online (Sandbox Code Playgroud)

我收到错误:

“ARC 不允许将 Objective-C 指针隐式转换为‘__unsafe_unretained Class *’”

似乎它希望 filterClass 属性强大,但这也会产生错误,因为据我了解,您无法将原始类型定义为强大的。显然,我可以将字符串存储为对类的引用并使用 -NSClassFromString,但是如果我可以仅传递类对象,那就太好了。因为我可以将它们放入数组中,而且看起来应该是可能的。如果我的做法完全错误,请告诉我。

Joh*_*tty 4

财产申报必须是

@property (nonatomic, assign) Class filterClass;
Run Code Online (Sandbox Code Playgroud)

代替

@property (nonatomic, assign) Class *filterClass;
Run Code Online (Sandbox Code Playgroud)

请检查这个答案Objective-c - Class Keyword