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:)без фіксації повернутого значення.
Детальніше