作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在Movable Protocol中定义了可选方法
@objc protocol Movable
{
@objc optional func move(to point: CGPoint)
}
现在,我正在尝试使用 Struct 继承相同的协议(protocol),但编译器在下面给出的行中提示。
错误:-非类类型“Shape”不能符合类协议(protocol)“Movable”
struct Shape: Movable
{
func drawShape(){
print("DrawShapped Called")
}
func move(to point: CGPoint) {
print("Struct Movable called")
}
}
而且,如果我在某个类而不是结构中继承 Movable 协议(protocol),它会完全正常工作。
任何帮助将不胜感激。谢谢
最佳答案
当您将协议(protocol)标记为 @objc
时。您将该协议(protocol)隐式标记为 class
协议(protocol)。也就是说,它必须由一个类来实现。因为在 objective-c 中,一个结构体不能实现一个协议(protocol)。
尝试将其更改为
class Shape: Movable
{
func drawShape() {
print("DrawShapped Called")
}
func move(to point: CGPoint) {
print("Struct Movable called")
}
}
或者标记不标记Movable
为@objc
关于swift - 如何在Struct中实现协议(protocol)可选方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48323626/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!