在 Objective C 中设置 "grandparent" class

Setting a "grandparent" class in Objective C

我正在创建多个不同的 UI subclasses,它们可以使用 JSContext 创建,我希望它们都继承一组特定的方法。

class 从 NSButtonNSTextView。最好有一个子 class 作为 NSView 父 class,但我不知道这是否可能 — 或者如何开始搜索。

例如:

@interface CustomButtonClass : NSButton

我正在寻找使 NSButton 从自定义 NSView 子class 继承的方法。

有没有办法解决这个问题,或者我是否需要创建多个中间 classes?

答案非常明显,但来自不同的语言,我很难建立联系。多亏了所有的评论,它非常容易理解。

与其尝试在继承树中的某处插入中间 class,不如为 NSView 创建一个类别。类别还可以包括所有必需的协议。

例如,在我的例子中,我想向 JSContext 公开多个 NSView 方法,并创建一些我自己的方法,这些方法适用于任何 NSView 派生对象.

@protocol JSInterfaceExports <JSExport>

// Anything you want to expose to JS
- (void)customMethod;

// You can also expose all the common NSView properties
// and methods to JS in this protocol
@property (nonatomic) NSRect frame;
- (void)removeFromSuperview;

@end

@interface NSView (JSInterface)

// Any custom methods and properties
- (void)customMethod;

@end

将此文件包含在任何 NSView 子class 上,使它们符合 <JSInterfaceExports>,你就设置好了。