在Swift(和Objective-c)中,通常不能继承NSTokenAttachmentCell的子类。但是,如果我创建一个桥接标头并为NSTokenAttachmentCell定义标头,则可以在Swift中对其进行子类化。
Here is an example of it in objective-c。 NSTokenAttachmentCell不公开可用。但是,如果为其创建头文件,则可以对其进行子类化。您无法在Swift中创建头文件。除了在桥接标头中创建一个,还可以在Swift中实现吗?
/useIndex?name=starTrek&userid=spock
答案 0 :(得分:0)
简单的答案是“否”,您不能从私有类继承。
私有访问将实体的使用限制为封闭的声明以及该声明在同一文件中的扩展名。当仅在单个声明中使用特定功能的实现细节时,请使用私有访问权限来隐藏这些细节。
来源:https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html
答案 1 :(得分:0)
我创建了一个Swift系统模块swift package init --type executable
。除了标准SPM文件之外,唯一的文件是自定义标头文件,该文件尚未公开。
我现在可以将系统模块包用作依赖项,并将您通常无法子类化的Apple类子类化。
git clone https://github.com/saltzmanjoelh/TokenExample && cd TokenExample && swift test
您将看到正确的继承
Success: - <TokenExample.CustomTokenAttachmentCell: 0x7fc1be803d10> #0
- super: NSTokenAttachmentCell
- super: NSTextAttachmentCell
- super: NSCell
- super: NSObject
我使用了这两个指南作为参考: