我在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类适当地包含此类别?我还注意到,当我#将类A导入到类C的标头中时,类别方法起作用,但是我收到“对象可能不响应推送消息”警告。有人可以弄清楚类别是如何“重用”的,为什么它们有名称(在本例中为StackUtil),以及如何使用它们。

最佳答案

在声明该类别的头文件中应该有一个对应的@interface NSMutableArray (StackUtil)。导入该标头应该足以使您可以在导入范围内的任何NSMutableArray上使用新方法。

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


当然,@interface,通常是@implementation,应该独立于您的类A,B和C,放在自己的文件中,因为它们是通用添加,而不是属于那些客户端类之一。

关于objective-c - 如何在多个类别中使用同一类别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3383808/

10-09 16:14