Вопрос о делегатах

Это ошибка в Appium. В качестве обходного пути, после закрытия всплывающего окна / диалога, если мы поместим приложение в фоновый режим и возобновим его, Appium снова начнет обнаруживать элементы.

driver.runAppInBackground(Duration.ofSeconds(5))
9
задан Jab 18 April 2009 в 21:42
поделиться

2 ответа

Нет, в общем, вы не должны удерживать делегата. Поскольку делегат уже имеет ссылку на ваш объект, если вы сохраните делегат, вы, по сути, создадите циклическую ссылку. Кроме того, по той же причине вы можете предположить, что ваш объект будет уничтожен до уничтожения делегата.

Ознакомьтесь с в этих статьях для получения дополнительной информации об использовании / реализации делегатов.

РЕДАКТИРОВАТЬ: Есть несколько исключений, которые были указаны другими.

11
ответ дан 4 December 2019 в 19:36
поделиться

Как говорит htw, вы вообще не должны оставлять делегата. В многопоточной среде вам часто приходится сохранять все, что вам нужно, даже если только для продолжительности вызова метода, чтобы убедиться, что он не станет недействительным за вашей спиной. Например, если (на самом деле это не так), - [NSURLConnection initWithRequest: делегат] создали новый поток, в котором поток мог сохранить (тогда, вероятно, будет автоматически освобождать) свои параметры. В действительности NSURLConnection является особым случаем, поскольку он сохраняет свой делегат на время соединения.

1
ответ дан 4 December 2019 в 19:36
поделиться