“ open”修饰符与扩展名的“ public”默认访问权限冲突

时间:2019-04-10 13:14:30

标签: ios swift sprite-kit

我正在构建一个高度可定制的组件,框架,以在未来的游戏开发项目中实施;一个操纵杆。

操纵杆应该在用户触摸屏幕时出现,内部旋钮随着触摸的改变而四处移动,而在触摸结束时它最终消失。

编写一个响应这种行为的组件并不是什么大问题;但是,我想做的是从用户那里委派尽可能多的“原始”控件,并实现响应触摸的方法,而不必手动覆盖UIResponder touchesBegan等方法。

到目前为止,我已经完成的工作:我在框架内使用公共扩展扩展了SKScene,该扩展覆盖了touches方法,并调用了更新屏幕上操纵杆位置的静态方法。取决于当前的触摸和事件。

我想解决的只是细微差别。这是我的代码:

public extension SKScene {
    override open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)

        Joystick.touchesBegan(touches, with: event)
    }
}

XCode希望touchesBegan方法必须具有open修饰符,但是扩展可以采用的限制最少的修饰符是public; XCode发出警告:

  

“打开”修饰符与扩展名的“公共”默认访问权限冲突

有什么办法可以解决这个问题?我的实现是否被认为是错误的设计,如果是这样,是否有另一种方法可以实现此结果而无需用户手动实现和覆盖touches方法?谢谢。

0 个答案:

没有答案