这个问题的前传在这里。
我有一个班级(A),班级有类别。在类别中,我定义并实现了一个方法。
现在我正在尝试在(假设为 B)类中调用 [a someMethod]。我的 B 班达不到这个方法。不能从其他类中调用类别方法吗?
这个问题的前传在这里。
我有一个班级(A),班级有类别。在类别中,我定义并实现了一个方法。
现在我正在尝试在(假设为 B)类中调用 [a someMethod]。我的 B 班达不到这个方法。不能从其他类中调用类别方法吗?
您没有显示您的代码,但是在引用类别方法的 .m 文件中,您确实需要导入定义类别接口的文件的标题。
如果您在 .m 文件中定义类别,您将无法从该 .m 文件外部调用该类别的方法。
不幸的是,您没有提供有关您的问题的足够信息。因此,我们所能做的就是告诉您应该如何做,并猜测您遇到麻烦的原因。
当您发布问题时,您应该发布所有相关信息。在这种情况下,那将是不起作用的代码。
另外,你的说法
我的 B 班达不到这个方法。
几乎没有任何意义。你得到一个编译器错误,一个运行时错误,语法窗口没有显示它,你到底是什么意思?
现在,当您在类上实现类别时,您希望在头文件 (.h) 中声明该类别...
@interface Foo (BarExtensions)
- (NSString*)bar;
@end
然后,在实现 (.m) 文件中,提供这些方法的实现。
@implementation Foo (BarExtensions)
- (NSString*)bar {
return @"FooBar";
}
@end
当然,您应该适当地命名事物。
此外,请确保将 .m 文件包含在为您的目标构建的文件列表中。
如果你这样做了,就不会出错了。