我在一些源代码(其他开发人员)中看到过这样的东西:
#import "SomeClass+SomeOtherClass.h"
+
是什么?这是什么意思?
答案 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];
}
参考: