【发布时间】:2016-11-26 17:57:58
【问题描述】:
在我自己创建 this question 关于无法按名称创建自己的 UIImageView 类之后,我面临着类似的问题,这次是 CIFilter 子类没有被其他问题的接受答案解决。
说了,这就是问题所在。
我正在创建 CIFilter 类的子类,例如 MyEffectFilter1、MyEffectFilter1 等。
这些子类具有创建特定图像的便捷方法:
+ (instancetype)novo {
MyEffectFilter1 * newFilter = [self filterWithName:...
// do stuff
return newFilter;
}
当我尝试通过字符串使用这个新命令创建此类时
id newObject = [NSClassFromString(nameOfClass) novo];
并验证创建的对象,我发现它们的类不是我创建的,而是 CIFilter 的。例如:如果我使用我创建的类创建一个漫画过滤器:
// initialization code on MyComicClass.m
+ (instancetype)novo {
MyComicClass * newFilter = [self filterWithName:@"CIComicEffect"];
// do stuff
return newFilter;
}
通过做
id newObject = [NSClassFromString(@"MyComicClass") novo];
然后对控制台执行po newObject,或者使用
Class class = [newObject class];
我得到的类等于CIComicEffect 而不是MyComicClass。
关于如何解决这个问题的任何想法?
【问题讨论】:
标签: ios objective-c class cocoa-touch