如何在多个类中使用相同的类别?

时间:2010-08-01 21:26:20

标签: objective-c cocoa macos nsmutablearray

我在A类中使用的NSMutableArray的堆栈类别

@implementation NSMutableArray (StackUtil)

- (void)push:(id)stackObject {

 [self addObject:stackObject];
}
- (id)pop {

 id retVal = [[self lastObject]retain];
 [self removeLastObject];
 return [retVal autorelease];
}

@end

如何正确地将此类别包含在与A类无关的B类中?另外我注意到当我将#Import A类放入C类的标题时,类别方法起作用,但我得到“对象可能无法响应推送消息”的警告。有人可以弄清楚类别是如何被“重用”的,以及为什么他们有名字(在这种情况下是StackUtil),以及如何使用它们。

1 个答案:

答案 0 :(得分:6)

您应该在头文件中有相应的@interface NSMutableArray (StackUtil)来声明该类别。导入该标题应该足以将新方法用于导入范围内的任何NSMutableArray

@interface NSMutableArray (StackUtil)
- (void) push:(id)stackObject;
- (id) pop;
@end

当然@interface,通常是@implementation,应该是他们自己的文件,独立于你的A,B和C类,因为它们是通用的附加内容,而不是属于到其中一个客户类。