Swift 2: неизменяемое значение X никогда не используется, рассматривая замену на '_'
В нескольких случаях моего старого кода я получаю предупреждение:
Неизменяемое значение X никогда не используется, рассматривая замену на '_'
Например, это часто возникает, если я проверяю перечисление, у которого есть связанный объект (но я не использую этот объект в этом случае) - или если я использую конструкцию "Если да", чтобы проверить, является ли объект ноль или нет.
Это не мешает мне так много, чтобы пройти эти предупреждения и внести изменения, но я задавался вопросом, знал ли кто-нибудь, почему это рекомендуется, - зачем беспокоиться об этом? Не повлияет ли это на производительность?
Ответы
Ответ 1
Неизменяемое значение X никогда не используется, рассматривая замену на "_"
это предупреждение появляется, потому что вы не используете свою переменную после объявления ее. просто игнорируйте предупреждение и продолжайте писать свой код и используете свой объект, он исчезнет.
Swift 2 - очень чувствительный язык, который даст вам предупреждение на каждом шагу.
Я объясняю простую демонстрацию предупреждения о любом объекте здесь:
1. Неизменяемое значение X никогда не используется, рассматривая замену на '_'
это произойдет, когда вы не будете использовать объект и объявите его только.
Пример: -
var nameImg:String = "";
2. переменная 'nameImg'а была написана, но никогда не читалась.
это произойдет, когда вы присвоите свой объект какой-либо ценности, но вы все еще не используете его ни в каком другом объекте.
Ex -
var nameImg:String = "";
if(action==1){
nameImg = "navTab";
}
else{
nameImg = "back";
}
3. Нет предупреждений, если вы назначаете какое-либо значение своему объекту и также используете его в другом объекте;).
Ex-
var nameImg:String = "";
if(action==1){
nameImg = "navTab";
}
else{
nameImg = "back";
}
//back & menu btn
let btnBack = UIButton(type: UIButtonType.Custom);
btnBack.setImage(UIImage(named:nameImg), forState: UIControlState.Normal);
btnBack.sizeToFit();
Ответ 2
Эти изменения рекомендуются, потому что, если вы вообще не используете эти переменные, вам стоит подумать о замене его на "_". Таким образом, вы (и другие люди) можете позже понять свое намерение быстрее.
С точки зрения производительности это, вероятно, будет лишь незначительным улучшением, которое вы вообще не заметите. Такая же ситуация применяется при компиляции и оптимизации вашего кода.
Ответ 3
Как правило, вы должны работать без предупреждения в повседневной работе. Очевидная причина заключается в том, что вы собираетесь пропустить настоящие и важные предупреждения, если ваш код производит сотни не очень важных предупреждений.
Дело, которое вы описываете, лучше всего решить таким образом: вместо использования if let myObject = myObject
вам лучше использовать:
if myObject != nil
Таким образом, понятно, что вы хотите сделать.
Ответ 4
Это потому, что ваше значение никогда не использовалось после объявления его, у меня была такая же проблема не так давно.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let row = indexPath.row <-----
Я обнаружил, что просто распечатал его после того, как ошибка исчезла.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let row = indexPath.row <---
print(row) <---