2011-11-28 33 views
0

在下面的代码中,我使用NSClassFromString将NSString“ColorFilter”转换为类名称ColorFilter。 ColorFilter类的结果似乎与导入语句中具有相同名称的头文件中定义的类没有关联。由NSClassFromString导致的类不与头文件中定义的类关联

#import "ColorFilter.h" //ColorFilter is a subclass of UIViewController which also has an iVars name imageView of UIImageView class 
在我.m文件

在我的h文件

NSString *filter = @"ColorFilter"; 
UIViewController *myFilterClass = [[NSClassFromString(filter) alloc] initWithNibName:filter bundle:nil]; 

我从线得到以上是错误[ColorFilter initWithNibName:束:]:无法识别的选择发送到实例...

为了测试,我修改了最后一行是:

UIViewController *myFilterClass = [[NSClassFromString(filter) alloc] init]; 
myFilterClass.imageView = .....; 

现在,我得到的错误是 - [ColorFilter setImageView:]:无法识别的选择发送到实例...

我的结论是,这是由NSClassFromString产生的ColorFilter类不知道这个事情的#import“ ColorFilter.h”。

不知道我的错误是什么?

回答

0

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

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

2

ColorFilter.m可能不会与您的应用程序一起编译。在项目的build sources标签中,在编译源代码下,你看到“ColorFilter.m”吗?如果不是,将其拖入该列表中。

+0

它在那里。另外如果我用实例化语句中的ColorFilter替换NSClassFromString(filter)。一切都按预期工作。 – user523234

+0

在colorfilter对象上调用classname以查看应用程序的名称 –

+0

请参阅我对此帖的回答。 – user523234

相关问题