Ios 在Swift中调用可选委托函数的最佳方式是什么

Ios 在Swift中调用可选委托函数的最佳方式是什么,ios,swift,optional,Ios,Swift,Optional,在Swift中调用可选委托函数的最佳方式是什么 假设我有以下协议: @objc protocol SomeDelegate { optional func someOptionalFunction(sender: AnyObject) } 我有一个这样的班级: class Foo { var delegate: SomeDelegate! = nil func someFunction(email: String, password: String) {

在Swift中调用可选委托函数的最佳方式是什么

假设我有以下协议:

@objc protocol SomeDelegate {

    optional func someOptionalFunction(sender: AnyObject)

}
我有一个这样的班级:

class Foo {

    var delegate: SomeDelegate! = nil

    func someFunction(email: String, password: String) {
        self.delegate.someOptionalFunction?(self)
    }

}
我是否应该这样称呼它?如果没有,最好的做法是什么

提前感谢。

该调用中的“
”位使调用安全,无论是否实现了可选委托。这就是我在自己的代码中所要做的


如果您绝对希望确定
someOptionalFunction
存在,它存在于每个
NSObject
实例中。但这几乎肯定是过分了。

一些可选功能?(self)
绝对可以。但是

基本上,对代理的引用应该是弱的、可选的

class Foo {

    weak var delegate: SomeDelegate? = nil
//  ^^^^                           ^  
    func someFunction(email: String, password: String) {
        self.delegate?.someOptionalFunction?(self)
//                   ^
    }
}

是swift中最常见的模式之一,因此,无论您如何正确地执行此操作,此规则都有例外(在苹果的框架中有一些突出的例外)。虽然方法名称后的问号在“将swift与Cocoa和Objective-C结合使用”中有描述,但在“swift编程语言”中我找不到有关此的文档。你有推荐人吗?。我想你要求的是“通过可选链接调用方法”位?是的,我一直在看这篇文章。但是我找不到任何关于
方法?()
调用语法的提及,调用语法会动态检查方法是否实现。@NikolaiRuhe这里是:@rintaro谢谢,但我正在寻找该功能的正确文档(在Swift手册中)。我不想知道该功能的名称以及它是否被视为可选链接的一部分。