首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SWIFT2.2和NSProxy.我该怎么用呢?

SWIFT2.2和NSProxy.我该怎么用呢?
EN

Stack Overflow用户
提问于 2016-04-07 14:06:53
回答 1查看 1.2K关注 0票数 0

NSProxy的接口是

代码语言:javascript
复制
public class NSProxy : NSObjectProtocol {
    public class func alloc() -> Self
    public class func `class`() -> AnyClass
    public func forwardInvocation(invocation: NSInvocation)
    public func dealloc()
    public func finalize()
    public var description: String { get }
    public var debugDescription: String { get }
    public class func respondsToSelector(aSelector: Selector) -> Bool
}

所以它没有任何初始化器。但是Swift编译器需要从子类的初始化器调用Super.init

在从初始化器返回之前,并不会在所有路径上调用Super.init

代码语言:javascript
复制
class SimpleDecorator: NSProxy {
    let phone: Phone
    init(phone: Phone) { // compile error with Super.init
        self.phone = phone
    }
}

我不把它放在对超级的调用中,它不会编译,但是当然,由于NSProxy没有init,所以当我调用super.init()时它不会编译。

在Swift中有一个NSProxy子类是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2019-07-16 19:47:03

NSProxy是一个抽象类。苹果公司关于NSProxy的文档说:“一个抽象的超类定义了一个API,用于为其他对象或尚未存在的对象充当替身。”

维基百科抽象类的文档说:

在支持继承的语言中,抽象类或抽象基类(ABC)是不能实例化的类,因为它要么被标记为抽象,要么只是指定抽象方法(或虚拟方法)。

为抽象类调用super.init()是错误的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36478679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档