Утечка памяти с быстрым объектом, используемым от ObjC - PullRequest
0 голосов
/ 27 июня 2019

У меня есть объект swift, экземпляр которого создан, и класс Objective C, который не использует ARC.Он создается из init и в методе dealloc освобождает его (он хранится в @property, поэтому я отправляю release в его резервную переменную).Однако на графике памяти я вижу, что всякий раз, когда я создаю экземпляр этого объекта (он используется всякий раз, когда пользователи получают доступ к экрану в приложении), он никогда не освобождается.Это просто выглядит как одинокий объект в графе памяти.Я видел, что внутри него это создает цикл удержания в закрытии, но я сделал его слабым, но проблема сохраняется.Любые предложения о том, как продолжить отладку этой проблемы?

Единственный кулприт, о котором я мог подумать, это закрытие, но теперь оно использует слабое «я», но утечка сохраняется:

  var observerToken : NSObjectProtocol?;
    @objc public override init() {
        self.accessToken = ""


             super.init()
        RPScreenRecorder.shared().delegate = self

        if #available(iOS 12.0, *) {
           self.observerToken = NotificationCenter.default.addObserver(forName: UIScreen.capturedDidChangeNotification, object: UIScreen.main, queue: OperationQueue.main) { [weak self] (notification)  in

                guard let strongSelf = self else { return }
                if strongSelf.broadcastPickerView != nil && strongSelf.screenTrack == nil {
                    let isCaptured = UIScreen.main.isCaptured

                    strongSelf.updateScreenSharingIcon(screenIsShared: isCaptured)
                }
            }
        }
    }
...