Попробуйте убрать ошибку.
А без классического Type Eraser и какого-нибудь AnyFoo, AnyHashable и тд?
Please open Telegram to view this post
VIEW IN TELEGRAM
📕 LLVM: Инфраструктура для разработки компилятора
Рано или поздно вы можете захотеть узнать несколько больше о том, как же работает Swift. Для этого конечно же можно начать изучать исходный код языка, а можно пойти дальше и вникнуть в то, как работает вся система компиляции исходного кода.
Компилятор Swift основан на проекте LLVM. Это целая инфраструктура программных решений, на ее основе существуют решения для C, C++, Objective-C, JavaScript, Kotlin и многих других языков.
В этой книге вы узнаете, как именно работает LLVM, причем тут Clang, как все это установить на свой компьютер. Книга полна полезной информации и довольно интересных исследований в области расширения возможностей LLVM.
Рано или поздно вы можете захотеть узнать несколько больше о том, как же работает Swift. Для этого конечно же можно начать изучать исходный код языка, а можно пойти дальше и вникнуть в то, как работает вся система компиляции исходного кода.
Компилятор Swift основан на проекте LLVM. Это целая инфраструктура программных решений, на ее основе существуют решения для C, C++, Objective-C, JavaScript, Kotlin и многих других языков.
В этой книге вы узнаете, как именно работает LLVM, причем тут Clang, как все это установить на свой компьютер. Книга полна полезной информации и довольно интересных исследований в области расширения возможностей LLVM.
Mobius 2023
Если вы на конфе, то заглядывайте поздороваться на стенд VK. Тут все, Coffee&Code, SwiftBook, Стас, Дюша☺️
Если вы на конфе, то заглядывайте поздороваться на стенд VK. Тут все, Coffee&Code, SwiftBook, Стас, Дюша☺️
Forwarded from Coffee&Code
VK ✕ Coffee&Code
🏙Москва
📆5 июня (Понедельник)
⏰19:30
📱iOS
Место: VK
Адрес: Ленинградский проспект, 39с79, БЦ SkyLight
Встречаемся в офисе компании VK для просмотра WWDC. Смотрим конференцию, обсуждаем новые технологии и отлично проводим время.
Необходима предварительная регистрация
VK — это более 200 технологичных проектов, больше 10 000 сотрудников и миллион возможностей проявить себя.
🏙Москва
📆5 июня (Понедельник)
⏰19:30
📱iOS
Место: VK
Адрес: Ленинградский проспект, 39с79, БЦ SkyLight
Встречаемся в офисе компании VK для просмотра WWDC. Смотрим конференцию, обсуждаем новые технологии и отлично проводим время.
Необходима предварительная регистрация
VK — это более 200 технологичных проектов, больше 10 000 сотрудников и миллион возможностей проявить себя.
💻 О многомодульных приложениях
Делить проект на модули - довольно популярный подход при разработке приложений, особенно когда MVP выпущен, а приложение начинает неконтролируемого обрастать межмодульными зависимостями. Сперва модули выделяют в отдельные классы/структуры, реализуя взаимодействия через интерфейсы, на втором этапе часть модулей переезжают в отдельные таргеты, и используются в составе проекта, как фреймворки. И т.д.
Все это не просто решает многие проблемы, но и создает новые. К примеру зависимость модулей друг от друга создает потенциальные проблемы в скорости компиляции проекта, когда один модуль не может быть скомпилирован, пока не скомпилирован другой. И это лишь вершина айсберга.
Довольно интересный опыт есть у ребят в СберЗдоровье, их лид Кирилл Смирнов делится им в своих статьях (первая, вторая) на Хабре. Советую к прочтению.
Кстати, года три назад я выкладывал пост про ортогональность ваших проектов, и как наследование способно сделать вам плохо.
Делить проект на модули - довольно популярный подход при разработке приложений, особенно когда MVP выпущен, а приложение начинает неконтролируемого обрастать межмодульными зависимостями. Сперва модули выделяют в отдельные классы/структуры, реализуя взаимодействия через интерфейсы, на втором этапе часть модулей переезжают в отдельные таргеты, и используются в составе проекта, как фреймворки. И т.д.
Все это не просто решает многие проблемы, но и создает новые. К примеру зависимость модулей друг от друга создает потенциальные проблемы в скорости компиляции проекта, когда один модуль не может быть скомпилирован, пока не скомпилирован другой. И это лишь вершина айсберга.
Довольно интересный опыт есть у ребят в СберЗдоровье, их лид Кирилл Смирнов делится им в своих статьях (первая, вторая) на Хабре. Советую к прочтению.
Кстати, года три назад я выкладывал пост про ортогональность ваших проектов, и как наследование способно сделать вам плохо.
Хабр
Как компании подготовиться к модуляризации iOS приложений
В активно развивающихся приложениях порой сложно обеспечивать масштабируемость, удобочитаемость и качество кода. Это частая ситуация, которая со временем может усложнить поддержку, выявление проблем и...
Forwarded from Coffee&Code | Community | IT | Android | iOS | Design | Frontend | Backend | DevOps | QA
Друзья, рады объявить тайминг нашего Mobile-Митапа Дзен х Coffee&Code, который пройдет 15 июля
16:00 - сбор гостей
17:00 - «Что такое Дзен для IT?» (Алексей Федотов, Дзен)
17:15 - Паблик-ток «Разработка и блоггинг - как совмещать и зачем?» с Алексеем Гладковым (Mobile Developer) и Кириллом Розовым (Android Broadcast)
19:00 - «Технический долг: что это такое и как с ним работать» (Владислав Марков, iOS Techlead в Дзене)
19:30 - «Как корутины входят в жизнь разработчиков?» (Василий Усов - iOS Разработчик в VK , автор книг по Swift, создатель телеграм канала Dev Channel)
20:00 - нетворкинг, свободное общение
21:00 - завершение мероприятия
Количество мест ограничено, регистрация - по ссылке
Всех ждем!
16:00 - сбор гостей
17:00 - «Что такое Дзен для IT?» (Алексей Федотов, Дзен)
17:15 - Паблик-ток «Разработка и блоггинг - как совмещать и зачем?» с Алексеем Гладковым (Mobile Developer) и Кириллом Розовым (Android Broadcast)
19:00 - «Технический долг: что это такое и как с ним работать» (Владислав Марков, iOS Techlead в Дзене)
19:30 - «Как корутины входят в жизнь разработчиков?» (Василий Усов - iOS Разработчик в VK , автор книг по Swift, создатель телеграм канала Dev Channel)
20:00 - нетворкинг, свободное общение
21:00 - завершение мероприятия
Количество мест ограничено, регистрация - по ссылке
Всех ждем!
Итоги мероприятия Дзена:
- познакомился с Иваном Воробьем (https://t.me/sparrowcode)
- рассказал про корутины в Swift, Kotlin, Lua, Go и C#
Отмечаем Июль, как успешный месяц 🍻
- познакомился с Иваном Воробьем (https://t.me/sparrowcode)
- рассказал про корутины в Swift, Kotlin, Lua, Go и C#
Отмечаем Июль, как успешный месяц 🍻
С осторожностью совмещайте новый Concurrency и старую асинхронность.
В данном случае показан пример, что использование коллбеков вместо async/await может привести к потере @MainActor.
Вроде бы Controller наследован от UIViewController, который @MainActor. Да и метод для надежности помечен, как @MainActor. Но при передаче в качестве коллбека @MainActor отбрасывается и функция выполняется на произвольном потоке (может на мэйне, а может и не на мэйне, смотря что свободно).
В данном случае показан пример, что использование коллбеков вместо async/await может привести к потере @MainActor.
Вроде бы Controller наследован от UIViewController, который @MainActor. Да и метод для надежности помечен, как @MainActor. Но при передаче в качестве коллбека @MainActor отбрасывается и функция выполняется на произвольном потоке (может на мэйне, а может и не на мэйне, смотря что свободно).
Forwarded from iOS Такой 🍏
🔥 На канале iOS Такой вышел новый выпуск командной викторины, посвященный теме Apple и разработке
В этом выпуске приняли участие две команды, которые соревновались друг с другом, чтобы показать свои знания и умения
Викторина была не только увлекательной, но и информативной. Участники отвечали на вопросы, связанные с продукцией Apple, и делились интересными фактами о разработке приложений и программ для iOS
Каждая команда демонстрировала свою экспертность в мире Apple, стараясь ответить на вопросы как можно точнее и быстрее. Атмосфера в студии была наполнена энергией и соперничеством
Если вы хотите провести время с пользой, узнать что-то новое о компании Apple и разработке для iOS, обязательно посмотрите этот выпуск на канале iOS Такой
#digest #викторина
В этом выпуске приняли участие две команды, которые соревновались друг с другом, чтобы показать свои знания и умения
Викторина была не только увлекательной, но и информативной. Участники отвечали на вопросы, связанные с продукцией Apple, и делились интересными фактами о разработке приложений и программ для iOS
Каждая команда демонстрировала свою экспертность в мире Apple, стараясь ответить на вопросы как можно точнее и быстрее. Атмосфера в студии была наполнена энергией и соперничеством
Если вы хотите провести время с пользой, узнать что-то новое о компании Apple и разработке для iOS, обязательно посмотрите этот выпуск на канале iOS Такой
#digest #викторина
Мобиус завершился.🥳
Выступление прошло отлично.❤️
Зря переживал, участники конференции доклад встретили очень тепло.
Погрузились в историю Swift Concurrency и разобрали, как же оно работает и при чем тут корутины и чем они лучше/хуже многопоточности.
Вот ссылки на материалы, которые я использовал
Статья Мелвина Конвея, с которой корутины и появились
Доклад Романа Елизарова про корутины в Kotlon
Сессия WWDC 22 Swift Concurrency behind the scene
Исходный код Context Switching для ARM
Замеры времени переключения контекста от TSUNA
Swift Concurrency Manifesto - манифест Криса Латнера о конкурентности в Свифт
Адская книга про конкурентность
Выступление прошло отлично.
Зря переживал, участники конференции доклад встретили очень тепло.
Погрузились в историю Swift Concurrency и разобрали, как же оно работает и при чем тут корутины и чем они лучше/хуже многопоточности.
Вот ссылки на материалы, которые я использовал
Статья Мелвина Конвея, с которой корутины и появились
Доклад Романа Елизарова про корутины в Kotlon
Сессия WWDC 22 Swift Concurrency behind the scene
Исходный код Context Switching для ARM
Замеры времени переключения контекста от TSUNA
Swift Concurrency Manifesto - манифест Криса Латнера о конкурентности в Свифт
Адская книга про конкурентность
Please open Telegram to view this post
VIEW IN TELEGRAM
Немного избитых и не избитых советов для того, чтобы компилятор мог сделать немного больше статической диспетчеризации вместо динамической.
Используем final для классов
final class A() { ... }
Используем private и fileprivate для типов, свойств и методов
private class B() {
func doSomething() { ... }
}
Если у класса
B
нет детей, то вызов doSomething()
в этом же файле может быть заменен на статический даже без final
.И это то, о чем не так и редко забывают разработчики. Уровни доступа - не просто красивый API, но и увеличение скорости работы приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Coffee&Code | Community | IT | Android | iOS | Design | Frontend | Backend | DevOps | QA
🎥 Фильм сейчас, еще в процессе монтажа и выйдет в следующем году. Но мы можем поделиться с вами видео со съемок, где вы увидите Сергея и Василия в действии
Смотрите видео, комментируйте в нашем чате, ставьте лайки и подписывайтесь на наш канал, чтобы не пропустить премьеру фильма!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM