Быстрые утечки при использовании универсальной функции закрытия с Double - PullRequest
0 голосов
/ 25 мая 2018

У меня есть простой массив, который содержит generic functions.Если хранить listeners в этом array, у меня странная проблема с leaks.Я могу использовать его без проблем с generic types любого типа, кроме Optional Numeric types.Например, если я использую Double?, у меня есть memory leak.Также проблема возникает только тогда, когда я фиксирую unowned/weak self.Может кто-нибудь объяснить мне, почему возникает эта утечка и как это исправить?

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    var observations = [(Double?) -> Void]()

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        observations.append { [unowned self] (new) in
            print(self)
        }

        return true
    }

}

Если я изменю observations на [(String?) -> Void](), то проблем не будет.

enter image description here

enter image description here

...