Чтобы objective-c код видел эти функции
Swift и objective-c два разных языка, и там свои нюансы есть, чтобы они могли быть друг с другом совместимы, и вот objc функции - один из этих моментов для совместимости
А зачем это нужно, если мы пишем на свифте, а не на obj-c?
Бывают проекты, где есть старый код на objective-c и иногда нужно в старом коде использовать функцию из нового кода из Swift, вот такой пример
у тебя может быть приложение на objc или даже на с++, со вставками свифта, вот там и надо, если это лютый легаси
Но зачем мне это нужно, если у меня совершенно новый проект на чистом свифте, в котором ни строчки на obj-c нет и не будет?
То есть, это просто легаси, которое Apple ленится переписать на новый (уже 7 лет как существующий) язык?
да, только не совсем ленятся, это не так просто все переделать, тот же swftui все равно под капотом старый добрый uikit использует
Понятно. Просто удивительно, что Apple при всём их перфекционизме до сих пор в самом главном фреймворке такие архаизмы держат.
Любое действие ui элемента= вызов Свифт кода через obj c
@IBAction это тот же @objx
Что касается objc фреймворков то в любом, но Свифт их девиртуализирует под капотом. @objc нужен там где явно нужен рантайм, например если нужно передать селектор
Самый простой пример Создаёшь кнопку кодом. Чтобы назначить на неё действие — тебе надо вызвать метод addTarget, который принимает только селекторы А вот селектор — эта тема обджа и поэтому тебе надо писать аннотацию обжс Пока ещё очень много кода на обдже или он смешан со Свифтом Есть популярные либы, которые так и остались на обдже Знать его полезно и понимать, когда перед тобой он — тоже Если говорить про селекторы — это методы обж функции по факту
Возможно это просто потому, что iOS уже много лет и так просто это всё не разъединить Не так просто полностью переписать кор… И они сейчас ведь делаю замену uikit и вот он уже на чистейшем Свифте Ну а если тебе не нравится как устроены элементы — тебе ведь никто не мешает всё это сделать самому Только вот стоит ли овчинка выделки?
Думается мне, что все эти вопросы вокруг Обж-с из-за того, что люди просто не хотят тратить своё ценное время на его изучение) Тут другой вопрос тогда вытекает - стоить ли реально вникать в синтаксис Обж-с или необходимость состоит лишь в знании описания некоторых методов на нем?
вот кстати да - почему-то про селекторы вообще люди не особо вникают
Обсуждают сегодня