iPhone:具有属性的类别+“无法识别的选择器发送到实例”异常

时间:2011-03-03 11:26:00

标签: iphone objective-c unrecognized-selector objective-c-category

首先,我看到有很多关于“无法识别的选择器发送到实例”的问题 我见过很少但没有看到关于访问类别属性中定义的内容......

我在UILabel上有一个属性的类别 确定了吸气剂和定位器 实际上我在2个不同的类别中拥有相同的属性(2个不同的类别:UIButton和UILabel) 问题是我可以访问UIButton的这个属性,但不能访问UILabel 一旦我尝试访问UILabel(文本)类别中的任何方法/属性,它就会删除“ - [UILabel test]:无法识别的选择器发送到实例0x4e539f0”异常。

导入两个类别文件。

我不知道这是什么问题。

以下是一些代码:

// UILabel+text.h
@interface UILabel (text)
  - (void)test;
@end

// UILabel+text.m
@implementation UILabel (text)
- (void)test {
  NSLog(@"test");
}
@end

// UIButton+text.h
@interface UIButton (text)
  - (void)test;
@end

// UIButton+text.m
@implementation UIButton (text)
- (void)test {
  NSLog(@"test");// works   
}
@end

// Usage (in UIViewController class) - both elements are defined in XIB
[self.button test];// works
[self.label test];// exception

任何帮助将不胜感激 我不知道可能出现的问题...

谢谢。

迈克尔。

2 个答案:

答案 0 :(得分:42)

您使用的是静态库吗?如果是这样,请将all_load添加到Other Linker Flags。

你确定“UILabel + text.m”在目标中吗?

答案 1 :(得分:0)

我在具有多个静态框架的项目中遇到了相同的问题。

all_load添加到链接器标志并不能解决我的问题! 我必须启用构建设置GENERATE_MASTER_OBJECT_FILE = YES,以便在运行时正确找到该类别。