在Objective-C中你能在两个不同的文件中定义一个类吗?

时间:2012-02-01 09:17:52

标签: objective-c xcode class

我知道一个文件可以定义许多不同的类。反过来呢?可以在几个不同的文件中定义一个类吗?

假设您要添加您编写的类的方法或属性(而不是框架类)。你能这样做吗?

注意我不想更改原始.m文件,我想添加类别无法做的属性。

3 个答案:

答案 0 :(得分:2)

一个类只能有一个@implementation块,所以不能在多个文件中定义一个类。

如果出于某种原因无法将代码添加到原始类@implementation中,则替代方案是子类或类别。

答案 1 :(得分:0)

不直接。

可替换地:

  1. 很好 - 在其他文件中创建类别

  2. 不太好 - #include主要实现文件中的其他文件。

答案 2 :(得分:0)

是的,你可以用类别来做到这一点。


//File1.h
@interface Object : NSObject

-(void)method;
@end

//File1.m
@implementation Object
-(void)method
{
    NSLog (@"hello");
}

@end

//File2.h
@interfacae Object(ObjectExtention) //How you declare a category
-(void)methodTwo;
@end

//File2.m
@implementation Object(ObjectExtention)
-(void)methodTwo
{
   NSLog (@"Categorie Method");
}

@end

//File3.m

#import "File1.h"
#import "File2.h"
int main()
{
    Object obj = [[Object alloc] init];
    [obj method]; //Declared in first file
    [obj methodTwo]; //Declared in second file where we had our categorie defined
    return 0;
}

您可以使用方法执行此操作,但是,您无法向类别之类的对象添加更多实例变量。