Objective C와 상호 운용되는 Swift 코드가 있는데 누수가있는 것으로 나타났습니다. 클로저를 제거하지 않고 NSMutableArray로 축소했습니다. 문제를 재현하는 순수 Swift 스 니펫 :NSMutableArray에 클로저 객체를 추가 한 다음 작동하지 않는다 - LOOK
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를 다음과 같이 변경했습니다. 배열에 클로저를 추가하는 메서드는 인덱스를 반환하고 배열에서 제거하는 메서드는 이전 메서드에서 반환 한 인덱스를 사용합니다. –