Почему увольнение вызывает делегирование много раз?

#ios #swift #delegates #protocols

#iOS #swift #делегаты #протоколы

Вопрос:

Я просто хочу отправить данные обратно на родительский контроллер представления.
Я пытаюсь реализовать делегирование с помощью моего второго контроллера представления.

 protocol SendDataDelegate {
    func sendData(data: String)
}

delegate?.sendData(data: metadataObj.stringValue!)
dismiss(animated: true, completion: nil)
 

Однако родительский контроллер представления получает данные более 16 раз.
Как я могу предотвратить более 2 раз?

Комментарии:

1. Это никогда не отправит его обратно более одного раза, добавьте свой код, который вы отправляете sendData , который по какой-то причине вызывается более одного раза.

2. Что вы подразумеваете под «предотвращением»? Готовы ли вы сделать так, чтобы он вызывался только с первой попытки, а не каждый раз выскакивал из второго контроллера представления? Куда ты звонишь delegate?.sendData(data: metadataObj.stringValue!) ?

3. Это вопрос к вашему отладчику. Установите точку останова sendData и посмотрите, что происходит. Отправляются ли данные каждый раз одинаково? sendData Всегда отправляется одним и тем же объектом? Вызывается sendData только в одном месте или вызывается в нескольких местах? Копни глубже и разберись в этом.

4. Вы проверили наличие возможных циклов сохранения? Я просто предполагаю, но, возможно, вы установили сильную ссылку на своего делегата.