別クラスに定義されたクロージャの呼び出しをしたいです。
下記のRootsMakerクラスのクロージャをViewContorollerのファンクション内で呼び出そうとしています。
swift
1self.VC.direction.calculation(completion: {[unowned self] route in 2 guard let routes = route.routes as? [Routes] else { 3 return 4 } 5 self.VC.mapView.addDirection(routes: routes, color: UIColor.red) 6}, failuer: { error in 7 print(error) 8})
ViewControllerではインスタンスを生成してクロージャを実行するメソッドを呼んでいます。
swift
1let RM = RootsMaker() 2RM.making(addressArray: self.addressArray, indexPathrow: indexPath.row ,mapView: self.mapView)
しかしこれを実行すると下記のようにエラーが出てしまいます。
エラー箇所は「self.VC.mapView.addDirection(routes: routes, color: UIColor.red)」になります。
Fatal error: Unexpectedly found nil while unwrapping an Optional value: file Direction_Sample/RootsMaker.swift, line 91 2021-04-05 13:16:46.659491+0900 Direction-Sample[1453:507980] Fatal error: Unexpectedly found nil while unwrapping an Optional value: file Direction_Sample/RootsMaker.swift, line 91
クロージャについて調べてみると強参照・弱参照という参照方法があり、循環参照という問題があるためそれに該当するのではないかと思い、「unowned self」を「weak self」に変えてみましたが結果は同じでした。
クロージャをViewControllerで直接実行した場合は問題なく動きます。
どうすればクロージャを呼び出しで実行できるでしょうか??
ご教授よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー