3

这个问题的前传在这里

我有一个班级(A),班级有类别。在类别中,我定义并实现了一个方法。

现在我正在尝试在(假设为 B)类中调用 [a someMethod]。我的 B 班达不到这个方法。不能从其他类中调用类别方法吗?

4

3 回答 3

4

您没有显示您的代码,但是在引用类别方法的 .m 文件中,您确实需要导入定义类别接口的文件的标题。

于 2012-08-27T18:10:12.743 回答
1

如果您在 .m 文件中定义类别,您将无法从该 .m 文件外部调用该类别的方法。

于 2012-08-27T18:13:08.520 回答
0

不幸的是,您没有提供有关您的问题的足够信息。因此,我们所能做的就是告诉您应该如何做,并猜测您遇到麻烦的原因。

当您发布问题时,您应该发布所有相关信息。在这种情况下,那将是不起作用的代码。

另外,你的说法

我的 B 班达不到这个方法。

几乎没有任何意义。你得到一个编译器错误,一个运行时错误,语法窗口没有显示它,你到底是什么意思?

现在,当您在类上实现类别时,您希望在头文件 (.h) 中声明该类别...

@interface Foo (BarExtensions)
- (NSString*)bar;
@end

然后,在实现 (.m) 文件中,提供这些方法的实现。

@implementation Foo (BarExtensions)
- (NSString*)bar {
    return @"FooBar";
}
@end

当然,您应该适当地命名事物。

此外,请确保将 .m 文件包含在为您的目标构建的文件列表中。

如果你这样做了,就不会出错了。

于 2012-08-27T18:25:18.197 回答