gpt4 book ai didi

swift - 如何在Struct中实现协议(protocol)可选方法?

转载 作者:行者123 更新时间:2023-11-28 09:40:52 24 4
gpt4 key购买 nike

我在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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com