小编Myk*_*yuk的帖子

枚举是否保留其关联对象?

我很好奇下一个代码是否会导致强大的参考周期?

enum Type {
    case some(obj:Any)
}

class Entity {
    var type:Type
    init() {
      type = Type.some(obj:self)
    }
}
Run Code Online (Sandbox Code Playgroud)

swift

7
推荐指数
1
解决办法
928
查看次数

无法覆盖另一个模块swift中类扩展中声明的open方法

我在另一个模块(使用pod)中声明了类扩展.

public extension UIView {
  open func doStuff() {...}
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在当前项目模块中的子类中重写此方法时

class ConcreteView : UIView {
  override open func doStuff() {...}
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

覆盖其定义模块之外的非打开实例方法

尽管该方法实际上标记为开放

作为一种解决方法,我在同一模块中声明了另一个类,其中声明了扩展并在那里覆盖了所需的方法

public class CustomView: UIView {
  override open func doStuff() {...}
}
Run Code Online (Sandbox Code Playgroud)

并在主模块中将此类设置为我的类的超类

class ConcreteView : CustomView
Run Code Online (Sandbox Code Playgroud)

所以只有在此之后我才能覆盖该方法.

它看起来真的像swift3中的一个错误,但也许我已经省略了为什么它以这种方式工作的一些理解?

ios swift swift3

6
推荐指数
1
解决办法
5827
查看次数

标签 统计

swift ×2

ios ×1

swift3 ×1