3

我在一些源代码(由其他开发人员)中看到了这样的内容:

#import "SomeClass+SomeOtherClass.h"

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

4

2 回答 2

4

假设您想向现有类(exp: NSString)添加功能。您可以通过创建子类或使用类别来做到这一点。并且通常使用模式 : 来命名定义类别的文件MyClass+MyCategory.h

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

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

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

查看此文档以获取有关类别的更多信息。

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

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

NSString *aString = @"Hello!";
NSString *reversedString = [aString reverseString];
于 2012-04-06T09:49:43.467 回答
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];
}

参考 :

于 2012-04-06T09:49:52.397 回答