nilかそうでないかで処理を分けるために、クロージャの引数をOptionalにしたSwiftのメソッドがあったのですが、
Objective-Cから使用するために@objc属性を付加したら、エラーが出て使えませんでした。
エラー内容
Method cannot be marked @objc because the type of the parameter 4 cannot be represented in Objective-C
🙅♂️エラーが出たメソッド定義
ViewController.swift
@objc public func go(completion: (SomeType?) -> ())
🙆♂️エラー回避のための代替策
引数と戻り値を囲み、クロージャ自体をOptionalにする
ViewController.swift
@objc public func go(completion: ((SomeType) -> ())?)
引数をOptionalにすることを諦める
ViewController.swift
@objc public func go(completion: (SomeType) -> ())
この時の選んだ回避策
実際に行った回避策としては、クロージャを2つに分けました。
ViewController.swift
@objc public func go(success: (SomeType) -> (), failure: (SomeType) -> ())
あまり、遭遇機会もないかと思いますが、備忘録として書き残しておきます。