Ответ 1
Вызов print()
делает что-то другое по своему усмотрению - точнее: что-то другое, как вы ожидали. Он вызывает NSView
print(sender: AnyObject?)
вместо печати журнала. Вы можете рассматривать это как ошибку или, по крайней мере, как совершенно неожиданное поведение, поскольку Swift.print(...)
обычно гораздо более используется.
Этот метод действий открывает панель "Печать", и если пользователь выбирает вариант, отличный от отмены, выводит ресивер и все его дочерние объекты на устройство, указанное на панели "Печать".
Взгляните на этот пост в форуме apple dev.
На самом деле это не ошибка, поскольку вызов print
, который является "ближе" в текущем контексте, безусловно, правильный. Вызов родительского print
намного более разумен, чем вызов некоторого произвольного другого print
. Только тот факт, что вы обычно используете другой отпечаток, здесь путают, так как в целом вы не беспокоитесь о том, в какой области находится журнал print
- он просто работает. Если вы считаете, что все наоборот, и хотите использовать печать print
вашего родителя, это будет лот более запутанным, чтобы явно указать, что вы хотите использовать родителей print
, а не Swift.print(...)
.
Единственное "решение" - использовать разные имена для двух функций, которые, вероятно, не произойдут.