什么是import语句,其中filename包含“+”?

时间:2012-04-06 09:45:07

标签: objective-c cocoa import header-files

我在一些源代码(其他开发人员)中看到过这样的东西:

#import "SomeClass+SomeOtherClass.h"

+是什么?这是什么意思?

2 个答案:

答案 0 :(得分:4)

假设您要为现有类添加功能(exp:NSString)。您可以通过创建子类来实现,也可以使用类别。通常使用模式命名文件来定义类别:MyClass+MyCategory.h

例如,我们可以在类别中的类reverseString中添加方法NSString

// File NSString+reversable.h
- (NSString *)reverseString;

// File NSString+reversable.m
- (NSString *)reverseString
{
    // Implementation
}

有关类别的更多信息,请查看此documentation

然后你可以在另一个类中使用该类别:

#import "NSString+reversable.h"
// ...

NSString *aString = @"Hello!";
NSString *reversedString = [aString reverseString];

答案 1 :(得分:4)

标头/源文件名中的“+”是 - 按惯例 - 用于描述Category实现。

示例:

假设您要为现有类添加一些功能(例如NSString类)。 (NSString+Utilities.h

// NSString+Utilities.h

@interface NSString (Utilities)
-(NSString *) doSthWithThisString;
@end

// NSString+Utilities.m

@implementation NSString (Utilities)

-(NSString *) doSthWithThisString
{
  NSMutableString *transformedStr = [self copy];

  // Do sth

  return transformedStr;
}

@end

使用它:

// in another file

#import "NSString+Utilities.h"

- (void)awakeFromNib
{
    NSString* myString = @"This is a string";

    // you may use our new NSString method as much as any already-existing one
    NSString* newString = [myString doSthWithThisString];
}

参考: