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