Есть ли причина когда-либо выбирать отправителя: есть ли при создании @IBAction в Swift? - PullRequest
1 голос
/ 06 апреля 2020

Тип отправителя устанавливается на Any по умолчанию, когда вы используете IB / раскадровки в XCode для создания IBAction, связывающего объект интерфейса (например, кнопку) с методом в файле кода.

Поскольку вы делаете это из интерфейса в код, Xcode должен знать через интерфейс, какой тип элемента управления вы используете, например, UIButton, и поэтому, почему он автоматически устанавливает отправителя на тип Any, а не к UIButton конкретно?

Есть ли причина оставить его как Any и не изменять его вместо типа UIButton в точке создания? Либо когда вы делаете это из интерфейса в код, либо когда вы сначала создаете IBAction в коде?

Basi c пример кода, который вы получаете, подключая кнопку к контроллеру вида Несмотря на нажатие кнопки управления на интерфейсе:

@IBAction func playAgain(_ sender: Any) {}

1 Ответ

4 голосов
/ 06 апреля 2020

Я думаю, что это необоснованный дефолт. Если ваша функция применяется только к одному элементу управления пользовательского интерфейса, то sender должен быть максимально строгим.

Технически, вы можете определить один @IBAction и связать его для нескольких элементов управления пользовательского интерфейса, разных типов. Но даже в таком случае более конкретный тип c, такой как NSView, будет более подходящим, чем Any.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...