我正在开发一个应用程序,以增加我对Swift的更多了解。我的问题之一是是否可以委托带有结构作为参数的可选函数。

我能做些什么:

@objc protocol someProtocol {
    optional func optionalFunc(someClass: someClass)
}

class someClass: NSObject {

}

但是,我想做什么(问题代表objc中的结构):
@objc protocol someProtocol {
    optional func optionalFunc(someStructure: someStructure)
}

struct someStructure {

}

我无法找到解决此问题的方法。

我想要的另一件事与此类似,但使用枚举而不是结构:
@objc protocol someProtocol {
    optional func optionalFunc(someEnum: someEnum)
}

enum someEnum {
    case example
}

如果有人可以帮助我,我将不胜感激!

非常感谢!卢西亚诺!

最佳答案

Swift 2.0允许您执行协议的默认实现。

protocol someProtocol {
    func optionalFunc(someStructure: SomeStructure)
}

extension someProtocol {
    func optionalFunc(someStructure: SomeStructure){
        // optional, leave empty
    }
}

struct SomeStructure {

}

这样,您就可以使用可选装饰来做您想做的事情。

09-25 20:56