あるクラスで以下のようなクラスでプロトコルを作ってその処理を書こうとしました。
そしたらエラーが出てXcodeの言われるがまま!をつけたのですが何故関数呼び出し時の()の前に!をつけなければいけないのかがわからず、検索しても出てこないし、困ったのでこちらで質問させていただきます。
-
知りたいこと
- なぜ
()の前に!をつける必要があるのか
- なぜ
-
ソースコード
swift
1 2import UIKit 3 4@objc protocol CatchContentViewControllDelegate { 5 optional func backScreen() 6} 7 8class CatchContentViewController: UIView { 9 10 var delegate:AnyObject? = nil 11 12 13 @IBAction func pressedBackButton(sender: AnyObject) { 14 // ここでエラーが出るのでXcodeの指示通り 15 // self.delegate?.backScreen!() 16 // と言う風に修正。 17 self.delegate?.backScreen() 18 } 19} 20
- エラーメッセージ
Value of optional type '(() -> ())?' not unwrapped; did you mean to use '!' or '?'?
何卒よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。