在 Objective C 中设置 "grandparent" class
Setting a "grandparent" class in Objective C
我正在创建多个不同的 UI subclasses,它们可以使用 JSContext
创建,我希望它们都继承一组特定的方法。
class 从 NSButton
到 NSTextView
。最好有一个子 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>
,你就设置好了。
我正在创建多个不同的 UI subclasses,它们可以使用 JSContext
创建,我希望它们都继承一组特定的方法。
class 从 NSButton
到 NSTextView
。最好有一个子 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>
,你就设置好了。