调用UIView + Category方法时,UIView子类抛出"Selector not found"

atr*_*eat 4 cocoa objective-c ios

我有UIView,MyView的子类.我在UIView上也有一个名为UIView + simpleCategory的类别.

此类别声明了一个doSomething方法

@interface UIView (simpleCategory)

- (void) doSomething;

@end
Run Code Online (Sandbox Code Playgroud)

我在从UIView子类MyView调用doSomething方法时遇到问题.我收到"选择器无法识别"错误.我想知道我需要做些什么来让子类识别它的超类的类别方法.

在我的UIView子类的实例上调用UIView类别方法时出现问题:

MyView *view = [[MyView alloc] init];
[view doSomething];        // throws selector not found error here
Run Code Online (Sandbox Code Playgroud)

我想知道我是否在某个地方错过了#import,但我想了解Category和Subclasses之间的关系.

解决方案 ::

显然我的实施很好.我只需要将类别添加到应用目标.我通过单击Project Navigator中的类别来完成此操作.然后我单击Utilities View(从窗口右侧滑出的视图)并选中File Inspector菜单中的"Target Membership"复选框.这就是所有需要做的事情.谢谢大家的回复.

Jon*_*eid 5

您的项目正在查找声明UIView类别的头文件 - 否则您将收到编译时警告.

但在运行时,它没有找到类别方法.检查您的UIView类别实现文件以查看它进入的目标.我打赌它不包含在你的主要目标中.