TL; DR
popViewController(animated:)
повертається UIViewController?
, і компілятор видає це попередження, оскільки ви не захоплюєте значення. Рішення полягає в призначенні його підкреслення:
_ = navigationController?.popViewController(animated: true)
Швидкий 3 Зміна
До Swift 3 всі методи мали за замовчуванням "результат, який можна зняти". Ніякого попередження не буде, якщо ви не захопили те, що повернув метод.
Для того, щоб сказати компілятору, що результат повинен бути зафіксований, вам довелося додати його @warn_unused_result
перед оголошенням методу. Він буде використовуватися для методів, що мають форму, що змінюється (наприклад, sort
та sortInPlace
). Ви додали @warn_unused_result(mutable_variant="mutableMethodHere")
б сказати компілятору цього.
Однак із Swift 3 поведінка перевернута. Усі методи тепер попереджають, що повернене значення не захоплюється. Якщо ви хочете сказати компілятору, що попередження не потрібне, ви додасте @discardableResult
перед декларацією методу.
Якщо ви не хочете використовувати значення, що повертається, вам слід чітко сказати компілятору, призначивши його підкресленням:
_ = someMethodThatReturnsSomething()
Мотивація додати це до Swift 3:
- Попередження можливих помилок (наприклад, за допомогою
sort
мислення, це модифікує колекцію)
- Явний намір не фіксувати або потребувати фіксації результату для інших співробітників
API UIKit, як видається, відстає від цього, не додаючи @discardableResult
для цілком нормального (якщо не більш звичайного) використання popViewController(animated:)
без фіксації повернутого значення.
Детальніше