此问题的前言是here。iOS:尝试呼叫类别中实施的方法
我有一个类(A)和类有类。在我已经定义并实现了一个方法的类中。
现在我正在尝试(让我们假设B)类来调用[someMethod]。我的B班无法达到此方法。不可能从其他类中调用类别方法吗?
此问题的前言是here。iOS:尝试呼叫类别中实施的方法
我有一个类(A)和类有类。在我已经定义并实现了一个方法的类中。
现在我正在尝试(让我们假设B)类来调用[someMethod]。我的B班无法达到此方法。不可能从其他类中调用类别方法吗?
您没有显示您的代码,但在引用类别方法的.m文件中,您确实需要导入定义类别界面的文件头。
做到了。相同结果 – NCFUSN
结果不一样。有效。该死的,我以为#import DBAccess就够了。现在我必须记住我的方法在哪个类中实现。这是另一个头拱。 – NCFUSN
你必须包括类别 – SayeedHussain
不幸的是,您没有提供有关您的问题的足够信息。因此,我们所能做的就是告诉你应该怎么做,并猜测你为什么遇到麻烦。
当您发布一个问题时,您应该发布所有相关信息。在这种情况下,那将是不起作用的代码。
此外,您的发言
我的B级不能达到此方法。
几乎没有任何意义。你得到一个编译器错误,一个运行时错误,语法窗口不显示它,你究竟是什么意思?
现在,当你实现一个类的类别,要声明的类在头文件(.h)...
@interface Foo (BarExtensions)
- (NSString*)bar;
@end
,然后,在执行(.M)文件,为这些方法提供实现。
@implementation Foo (BarExtensions)
- (NSString*)bar {
return @"FooBar";
}
@end
当然,你应该适当地命名的东西。
此外,请确保您将.m文件包含在为您的目标生成的文件列表中。
如果你这样做,没有太多的错误。
类别应该作为类的扩展。它们有点类似于子类。但是为特定类编写的类只能由该类对象调用,而不能由其他类调用。例如:如果我为NSString编写一个类别,我只能使用NSString对象调用它。 – SayeedHussain
DBAccess类的类别。在其他类中:DBAccess * access = [[DBAccess alloc] init]; [访问myCategoryMeth];和NSString不一样吗? – NCFUSN
这是有效的,它应该工作。 – SayeedHussain