首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SWIFT4.1中使用NSProxy

在SWIFT4.1中使用NSProxy
EN

Stack Overflow用户
提问于 2018-04-18 15:20:13
回答 1查看 2.2K关注 0票数 6

如何在Swift中创建NSProxy子类?

尝试添加任何init方法都会出现错误:“无法在初始化器外部调用Super”,或者“在从初始化程序返回之前,并非在所有路径上都调用Super”

使用Objective子类作为基类可以工作,但感觉更像是黑客:

代码语言:javascript
复制
// Create a base class to use instead of `NSProxy`
@interface WorkingProxyBaseClass : NSProxy
- (instancetype)init;
@end

@implementation WorkingProxyBaseClass
- (instancetype)init
{
  if (self) {

  }
  return self;
}
@end



// Use the newly created Base class to inherit from in Swift
import Foundation

class TestProxy: WorkingProxyBaseClass {
  override init() {
    super.init()
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-16 06:06:38

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

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

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

抽象类的Calling super.init()是错误的。在第二类中,您不是为抽象类调用super.init(),而是调用WorkingProxyBaseClass,这是一个具体的类。在目标c中,您没有调用[super init],因此代码正在工作。

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

https://stackoverflow.com/questions/49903424

复制
相关文章

相似问题

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