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

gho*_*rce 2 macos cocoa objective-c 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
Run Code Online (Sandbox Code Playgroud)

如何正确地将此类别包含在与A类无关的B类中?此外,我注意到,当我#IMPORT A级到C级方法的工作类别的头,但我得到了"对象可能不响应Push消息"警告.可能有人清理如何类别"重用",为什么他们的名字(StackUtil在这种情况下),以及如何使用它们.

wal*_*lky 6

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

@interface NSMutableArray (StackUtil)
- (void) push:(id)stackObject;
- (id) pop;
@end
Run Code Online (Sandbox Code Playgroud)

当然@interface,通常是@implementation,应该是自己的文件,独立于你的类A,B和C,因为它们是通用的附加物,而不属于那些客户类之一.