Я успешно реализовал замыкание в классе, чтобы получить отфильтрованные контакты из моей телефонной книги, но когда я вызываю это замыкание, оно создает утечку, я протестировал его в инструментальном инструменте Xcode.
Смотрите мою реализацию,
class CR: NSObject {
func GetAllSBUser(handler:@escaping (Array<SBUserModel>?, Error?) -> ()) {
CRBlock = handler
if self.AllUSersModels.count>0 {
self.CRBlock(self.AllUSersModels, nil)
} else {
self.CRBlock(nil, err)
}}}
Я использую этот метод в другом классе, см. Мою реализацию.
У меня также есть глобальный экземпляр в моем делегате приложения, подобный этому
let app = UIApplication.shared.delegate as! AppDelegate
class friendsVC: UIViewController, UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.app.cri?.AllSBFriends(handler: { (SBfriendsUIDs, error) in
if error == nil{
// Do something with list
} else{ self.friendsCountLbl.text = "Friends \(0)" }
})
}
}
В классе friendsVC этот метод вызывает утечку. Как я могу удалить это?
Должен ли я использовать [не владеющий собой] или слабый? [Неизвестный Я] или слабый может вызвать сбой в некоторых особых случаях цикла сохранения.
Подскажите пожалуйста, как это исправить.