由NSClassFromString生成的类不与头文件中定义的类关联

时间:2011-11-28 03:31:08

标签: objective-c ios nsstring

在下面的代码中,我使用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”一无所知。

知道我的错误是什么吗?

2 个答案:

答案 0 :(得分:2)

可能无法使用您的应用编译ColorFilter.m。在项目的构建源选项卡中,在编译源下,您是否看到“ColorFilter.m”?如果没有,请将其拖入该列表。

答案 1 :(得分:0)

我发现我的一个静态库已经定义了“ColorFilter”类。

看起来在编译时,可以覆盖静态库中的现有类。但是在运行时,静态库中的类优先于动态生成的类。