Переменная sender
обычно является объектом, который отправил сообщение действия (это не совсем точно гарантировано - например, вы можете отправить сообщение действия самостоятельно и передать все, что захотите - но вот как это должно работать).
Вы не можете просто написать sender.tag
в этих методах, потому что точечная запись требует, чтобы объект имел статический тип, чтобы компилятор знал, какому сообщению соответствует свойство. Если вместо этого вы напишите [sender tag]
, оно будет работать.