私はObjective Cと相互運用するSwiftコードをいくつか持っていますが、私は漏れていることに気づきました。問題を再現する純粋なスウィフトスニペット:NSMutableArrayにSwift Closureオブジェクトを追加しても機能しない - LEAK
let myClosure : ((String?) ->())! = { (fileName: String?) in
}
let arr = NSMutableArray()
arr.add(myClosure)
arr.remove(myClosure)
これには誰が遭遇しましたか?どうすればそれを動作させることができますか?
閉鎖が等しいかどうかを比較することはできませんので、私は仕事ができない:https://stackoverflow.com/questions/24111984/how-do-you-test-functions-and-closures-for-equality。 - そのQ&Aには、ハンドラクラスでクロージャをラップするなどの回避策も考えられます。 –
ありがとうございました、提案したことを考え、APIを次のように変更しました。配列にクロージャを追加するメソッドはインデックスを返し、配列から削除するメソッドは前のメソッドから返されたインデックスを使用します。 –