185 похожих чатов

Кто-Нибудь может объяснить, зачем в свифте используются @objc функции?

16 ответов

20 просмотров

Чтобы objective-c код видел эти функции

Swift и objective-c два разных языка, и там свои нюансы есть, чтобы они могли быть друг с другом совместимы, и вот objc функции - один из этих моментов для совместимости

Denis-2.0 Автор вопроса

А зачем это нужно, если мы пишем на свифте, а не на obj-c?

Бывают проекты, где есть старый код на objective-c и иногда нужно в старом коде использовать функцию из нового кода из Swift, вот такой пример

у тебя может быть приложение на objc или даже на с++, со вставками свифта, вот там и надо, если это лютый легаси

Denis-2.0 Автор вопроса

Но зачем мне это нужно, если у меня совершенно новый проект на чистом свифте, в котором ни строчки на obj-c нет и не будет?

Denis-2.0 Автор вопроса

То есть, это просто легаси, которое Apple ленится переписать на новый (уже 7 лет как существующий) язык?

да, только не совсем ленятся, это не так просто все переделать, тот же swftui все равно под капотом старый добрый uikit использует

Denis-2.0 Автор вопроса

Понятно. Просто удивительно, что Apple при всём их перфекционизме до сих пор в самом главном фреймворке такие архаизмы держат.

Любое действие ui элемента= вызов Свифт кода через obj c

@IBAction это тот же @objx

Что касается objc фреймворков то в любом, но Свифт их девиртуализирует под капотом. @objc нужен там где явно нужен рантайм, например если нужно передать селектор

Самый простой пример Создаёшь кнопку кодом. Чтобы назначить на неё действие — тебе надо вызвать метод addTarget, который принимает только селекторы А вот селектор — эта тема обджа и поэтому тебе надо писать аннотацию обжс Пока ещё очень много кода на обдже или он смешан со Свифтом Есть популярные либы, которые так и остались на обдже Знать его полезно и понимать, когда перед тобой он — тоже Если говорить про селекторы — это методы обж функции по факту

Возможно это просто потому, что iOS уже много лет и так просто это всё не разъединить Не так просто полностью переписать кор… И они сейчас ведь делаю замену uikit и вот он уже на чистейшем Свифте Ну а если тебе не нравится как устроены элементы — тебе ведь никто не мешает всё это сделать самому Только вот стоит ли овчинка выделки?

Думается мне, что все эти вопросы вокруг Обж-с из-за того, что люди просто не хотят тратить своё ценное время на его изучение) Тут другой вопрос тогда вытекает - стоить ли реально вникать в синтаксис Обж-с или необходимость состоит лишь в знании описания некоторых методов на нем?

вот кстати да - почему-то про селекторы вообще люди не особо вникают

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта