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

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

16 ответов

12 просмотров

Чтобы 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 и вот он уже на чистейшем Свифте Ну а если тебе не нравится как устроены элементы — тебе ведь никто не мешает всё это сделать самому Только вот стоит ли овчинка выделки?

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

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

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

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

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
Легче писать на C++ чем на C, если полностью не изучать C++, а знать только основное?
Алмаз
8
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Карта сайта