以下はViewController.swiftになるのですが、コメントの内容はあっているでしょうか。
つまり、"変数delegateは、TestDelegateプロトコルに準拠したオプショナルなプロトコル"で間違いないでしょうか。
そもそも、オプショナルなプロトコルなんてあるのでしょうか。
また、delegate?.test(略)とありますが、
let testClass = TestClass()
testClass.delegate = self
testClass.test()
とした時にいつどこでアンラップされているのでしょうか。
?を使っているので暗黙的にアンラップされないような気がするのですが...。
swift
1import UIKit 2 3protocol TestDelegate: class { 4 func test(string: String) 5} 6 7class TestClass { 8 weak var delegate: TestDelegate? // 変数delegateは、TestDelegateプロトコルに準拠したオプショナルなプロトコル 9 10 func test() { 11 delegate?.test(string: "testメソッドが実行されたという通知を受け取る。") 12 } 13} 14 15class ViewController: UIViewController, TestDelegate { 16 17 override func viewDidLoad() { 18 super.viewDidLoad() 19 // Do any additional setup after loading the view, typically from a nib. 20 21 let testClass = TestClass() 22 testClass.delegate = self 23 testClass.test() 24 25 } 26 27 func test(string: String) { 28 print(string) 29 } 30}
swift初学者の私でも理解できる回答をいただけると幸いです。
p.s. 太字の3点について回答していただけると助かります。