在下面的代码中,我使用NSClassFromString将NSString“ColorFilter”转换为类名ColorFilter。结果ColorFilter类似乎与具有相同名称的import语句中的头文件中定义的类无关。
在我的.h文件中:
#import "ColorFilter.h" //ColorFilter is a subclass of UIViewController which also has an iVars name imageView of UIImageView class
在我的.m文件中:
NSString *filter = @"ColorFilter";
UIViewController *myFilterClass = [[NSClassFromString(filter) alloc] initWithNibName:filter bundle:nil];
我从上面一行得到的错误是[ColorFilter initWithNibName:bundle:]:发送到实例的无法识别的选择器......
为了进行测试,我将最后一行修改为:
UIViewController *myFilterClass = [[NSClassFromString(filter) alloc] init];
myFilterClass.imageView = .....;
现在我得到的错误是 - [ColorFilter setImageView:]:无法识别的选择器发送到实例...
我的结论是由NSClassFromString生成的ColorFilter类对此#import“ColorFilter.h”一无所知。
知道我的错误是什么吗?
答案 0 :(得分:2)
可能无法使用您的应用编译ColorFilter.m。在项目的构建源选项卡中,在编译源下,您是否看到“ColorFilter.m”?如果没有,请将其拖入该列表。
答案 1 :(得分:0)
我发现我的一个静态库已经定义了“ColorFilter”类。
看起来在编译时,可以覆盖静态库中的现有类。但是在运行时,静态库中的类优先于动态生成的类。