Что вы спрашиваете, почему это:
def func(a=[], b = 2):
pass
не является внутренне эквивалентным этому:
def func(a=None, b = None):
a_default = lambda: []
b_default = lambda: 2
def actual_func(a=None, b=None):
if a is None: a = a_default()
if b is None: b = b_default()
return actual_func
func = func()
, за исключением случая прямого вызова func (None , None), которые мы будем игнорировать.
Другими словами, вместо оценки параметров по умолчанию, почему бы не сохранить их каждый из них и оценить их при вызове функции?
Один ответ, вероятно, прямо там - он фактически превратит каждую функцию с параметрами по умолчанию в закрытие. Даже если это все скрыто в интерпретаторе, а не полномасштабное закрытие, данные должны быть где-то сохранены. Он будет медленнее и будет использовать больше памяти.
Согласно вашей ошибке, ваш listNameTextField
просто UIView
.
Проверьте соединения в вашем xib
/ storyboard
.
Вы не можете изменить тип UIView
в раскадровке на UITextField
, поскольку раскадровка создает дополнительные свойства в xml для UITextField
.
Вместо этого вам нужно удалить исходный UIView
из раскадровки, добавить новый UITextField
и установить новое соединение.