请参阅以下代码:
文件名:myclass.h
@interface myclass:NSObject
...
@end
@interface NSObject(CategoryName)
....
@end
我不明白如何在同一个.h文件中声明2个@interface指令?和实现文件一样,我们只能实现上述interfaces.eg。
之一文件名:myclass.m
@implementation myclass
...
@end
在上面的代码中,我无法编写@implementation Categoryname,因为.h文件的名称是myclass。我如何实现类别中描述的方法。
我的主界面也可以扩展一个类,我在同一个.h文件中定义的类别会扩展另一个类吗?
如何在目标c中将一个类声明为另一个类(嵌套类)?
提前谢谢。
更新
阅读回复后,我还有2个问题
答案 0 :(得分:4)
将其添加为同一文件中的另一个声明,如此
@implementation NSObject (categoryname)
...
@end
所有这些都在开发人员文档的Categories and extensions section中进行了描述。
由于您在同一个接口中扩展了另一个类 - 您需要在实现文件中有一个单独的声明。
编辑回答添加内容:
NSObject+CategoryName.h
和NSObject+CategoryName.m
中。一旦在类上声明并定义了一个类别,它就可以被该类的所有对象使用。因此,既然您要向NSObject添加扩展,那么无论是否导入头文件,这些方法都可用于从NSObject(几乎所有类)继承的所有类。但是,如果您不导入标头,则会收到编译器警告,即使Objective-C运行时仍然允许调用这些方法。