Вышел Xcode 13.4
Обновление включает SDK для iOS 15.5, iPadOS 15.5, tvOS 15.4, watchOS 8.5 и macOS Monterey 12.3.
👨🔧 Пофиксили некоторые проблемы Swift Playgrounds, краш при экспорте локализаций и баг с генерацией символов для плагинов Quick Look при дистрибуции.
Выпуск Xcode 13.4 поддерживает отладку на устройстве для iOS 15.5, iPadOS 15.5, tvOS 15.4, watchOS 8.5 и более поздних версий.
🛠 Для работы Xcode 13.4 требуется Mac под управлением macOS Monterey 12.3 или более поздней версии.
⬇️ Скачать можно здесь.
📝 Полный список обновлений.
Обновление включает SDK для iOS 15.5, iPadOS 15.5, tvOS 15.4, watchOS 8.5 и macOS Monterey 12.3.
👨🔧 Пофиксили некоторые проблемы Swift Playgrounds, краш при экспорте локализаций и баг с генерацией символов для плагинов Quick Look при дистрибуции.
Выпуск Xcode 13.4 поддерживает отладку на устройстве для iOS 15.5, iPadOS 15.5, tvOS 15.4, watchOS 8.5 и более поздних версий.
🛠 Для работы Xcode 13.4 требуется Mac под управлением macOS Monterey 12.3 или более поздней версии.
⬇️ Скачать можно здесь.
📝 Полный список обновлений.
Вы задумывались, почему в NSString, NSData, NSNumber и других используется префикс NS?
Вкратце, это наследие NeXTSTEP.
💻 Оригинальный код для фреймворков Cocoa был взят из библиотек Foundation и AppKit компании NeXTSTEP (эти названия до сих пор используются в фреймворках Cocoa компании Apple), и инженеры NextStep решили добавить своим символам префикс NS.
Поскольку Objective-C является расширением языка C и поэтому не имеет пространств имен, как в C++, символы должны были иметь уникальный префикс, чтобы они не сталкивались. Это особенно важно для символов, определенных во фреймворке.
Если вы пишете приложение, в коде которого ваши символы будут использоваться только один раз, вам не нужно беспокоиться об этом.
Но если вы пишете фреймворк или библиотеку для использования другими пользователями, вам также следует снабдить свои символы уникальным префиксом.
🙌🏻 На сайте CocoaDev есть страница, где многие разработчики в сообществе Cocoa перечислили свои "избранные" префиксы.
📖 Вам также может показаться интересным это обсуждение на SO.
Вкратце, это наследие NeXTSTEP.
💻 Оригинальный код для фреймворков Cocoa был взят из библиотек Foundation и AppKit компании NeXTSTEP (эти названия до сих пор используются в фреймворках Cocoa компании Apple), и инженеры NextStep решили добавить своим символам префикс NS.
Поскольку Objective-C является расширением языка C и поэтому не имеет пространств имен, как в C++, символы должны были иметь уникальный префикс, чтобы они не сталкивались. Это особенно важно для символов, определенных во фреймворке.
Если вы пишете приложение, в коде которого ваши символы будут использоваться только один раз, вам не нужно беспокоиться об этом.
Но если вы пишете фреймворк или библиотеку для использования другими пользователями, вам также следует снабдить свои символы уникальным префиксом.
🙌🏻 На сайте CocoaDev есть страница, где многие разработчики в сообществе Cocoa перечислили свои "избранные" префиксы.
📖 Вам также может показаться интересным это обсуждение на SO.
Уже совсем скоро WWDC, а ведь у Apple есть ещё и свой сервис стриминга!
Кроме посещения флагманских сторов, заглянул сегодня на The Grove, но оказалось, что там есть кое-что любопытнее стора, делюсь впечатлениями.
📺 На стендах представлены Тед Лассо, Разделение, Утреннее шоу и другие сериалы.
📸 Из крутых моментов выделю, что можно сфотографироваться рядом с реквизитом.
☕️А ещё каждый сериал балует фанатов съедобными штуками совершенно бесплатно. Просто вдумайтесь, насколько там внимательны к деталям, вот пара примеров:
— The Morning Show делится талончиком с рекламой, который можно обменять на кофе в соседнем киоске. Шоу же утреннее!
— Новый сериал Pachinko делится семенами японских цветов.
— А на стенде Теда Лассо всем желающим выдают мороженое со вкусом Эрл Грей. Ну и как тут не сказать «Вперёд, Ричмонд!»?
— Кроме этого, в Разделении есть вендинговый автомат, попробовав снеки из которого можно представить себя работником Lumon.
❤️ Как говорится, маркетинг в мелочах это верный путь к сердцам фанатов!
Кроме посещения флагманских сторов, заглянул сегодня на The Grove, но оказалось, что там есть кое-что любопытнее стора, делюсь впечатлениями.
📺 На стендах представлены Тед Лассо, Разделение, Утреннее шоу и другие сериалы.
📸 Из крутых моментов выделю, что можно сфотографироваться рядом с реквизитом.
☕️А ещё каждый сериал балует фанатов съедобными штуками совершенно бесплатно. Просто вдумайтесь, насколько там внимательны к деталям, вот пара примеров:
— The Morning Show делится талончиком с рекламой, который можно обменять на кофе в соседнем киоске. Шоу же утреннее!
— Новый сериал Pachinko делится семенами японских цветов.
— А на стенде Теда Лассо всем желающим выдают мороженое со вкусом Эрл Грей. Ну и как тут не сказать «Вперёд, Ричмонд!»?
— Кроме этого, в Разделении есть вендинговый автомат, попробовав снеки из которого можно представить себя работником Lumon.
❤️ Как говорится, маркетинг в мелочах это верный путь к сердцам фанатов!
Объяснение MVVM на примере простого приложения для iOS
Для демонстрации автор создаёт приложение для загрузки списка сортов напитков в UITableView.
MVVM — архитектура, которая обладает несложной логикой, использующей 3 различных объекта.
1️⃣ View Controller
Должен выполнять единственную операцию с нашим пользовательским интерфейсом. Он должен только получать и отображать информацию.
2️⃣ View Model
ViewController будет отправлять информацию в View Model. Она, в свою очередь, будет обрабатывать их, выполнять всю бизнес-логику и предоставлять выходные данные обратно контроллеру.
3️⃣ Model
Это простая модель, которая обычно содержит разобранные данные. Она будет использоваться только в View Model.
📖 Почитать можно тут.
🛠 А сам проект лежит здесь.
Для демонстрации автор создаёт приложение для загрузки списка сортов напитков в UITableView.
MVVM — архитектура, которая обладает несложной логикой, использующей 3 различных объекта.
1️⃣ View Controller
Должен выполнять единственную операцию с нашим пользовательским интерфейсом. Он должен только получать и отображать информацию.
2️⃣ View Model
ViewController будет отправлять информацию в View Model. Она, в свою очередь, будет обрабатывать их, выполнять всю бизнес-логику и предоставлять выходные данные обратно контроллеру.
3️⃣ Model
Это простая модель, которая обычно содержит разобранные данные. Она будет использоваться только в View Model.
📖 Почитать можно тут.
🛠 А сам проект лежит здесь.
Medium
MVVM Explained With a Simple iOS App
A simple example of MVVM architecture to load items in a UITableView and handle the information
This media is not supported in your browser
VIEW IN TELEGRAM
It's Over 9000 1000!
😔 В канале не было постов пару дней из-за некоторых сложностей с возвращением из поездки в Купертино, но скоро всё будет в своём потоке (if you know what I mean).
❤️Этот канал я активно веду вот уже почти три месяца, и хочу сказать Спасибо каждому из вас за то, что вы читаете статьи, оцениваете и делитесь постами.
ℹ️ В нашей сфере умение фильтровать информацию, выделять факты и оставлять на выходе только самое полезное — едва ли не важнейшее в профессии.
Вот несколько чисел на данный момент:
— 263 поста с момента создания.
— 53 реакции у самого популярного.
— 10 статей на хабре.
— 3 поста о топовых сторах Apple изнутри (раз, два, три).
> 1000 крутейших читателей.
🎉Этот пост я хотел написать в свой день рождения, если получится достичь заветной цифры, собственно, вот. Хотел == сделал!
🛠Кстати, по традиции, гифка сделана не в редакторе, а с помощью Swift. Код нужно подтюнить, но вы же этого не боитесь? 😉
Ведь даже путь в тысячу ли начинается с первого шага.
😔 В канале не было постов пару дней из-за некоторых сложностей с возвращением из поездки в Купертино, но скоро всё будет в своём потоке (if you know what I mean).
❤️Этот канал я активно веду вот уже почти три месяца, и хочу сказать Спасибо каждому из вас за то, что вы читаете статьи, оцениваете и делитесь постами.
ℹ️ В нашей сфере умение фильтровать информацию, выделять факты и оставлять на выходе только самое полезное — едва ли не важнейшее в профессии.
Вот несколько чисел на данный момент:
— 263 поста с момента создания.
— 53 реакции у самого популярного.
— 10 статей на хабре.
— 3 поста о топовых сторах Apple изнутри (раз, два, три).
> 1000 крутейших читателей.
🎉Этот пост я хотел написать в свой день рождения, если получится достичь заветной цифры, собственно, вот. Хотел == сделал!
🛠Кстати, по традиции, гифка сделана не в редакторе, а с помощью Swift. Код нужно подтюнить, но вы же этого не боитесь? 😉
Ведь даже путь в тысячу ли начинается с первого шага.
‼️ Apple напоминает, что приложения, поддерживающие создание учетных записей, должны позволять пользователям удалять их изнутри с 30 июня 2022 года.
⏳Этот срок был продлен.
Также нам напоминают о следующих требованиях:
— Опцию удаления учетной записи должно быть легко найти в приложении.
— Если приложение предлагает функцию Sign in with Apple, необходимо использовать REST API Sign in with Apple для отзыва пользовательских токенов.
— Недостаточно предоставить только возможность временного отключения или деактивации учетной записи. Люди должны иметь возможность удалить учетную запись вместе со своими личными данными.
— Приложения в строго регулируемых отраслях могут предоставлять дополнительные сервисы для облегчения процесса.
— Соблюдайте законодательные требования к хранению информации об учетных записях. Это включает в себя соблюдение местных законов в разных странах и регионах.
Также Apple рекомендуют проконсультироваться со своим юристом🧐.
⏳Этот срок был продлен.
Также нам напоминают о следующих требованиях:
— Опцию удаления учетной записи должно быть легко найти в приложении.
— Если приложение предлагает функцию Sign in with Apple, необходимо использовать REST API Sign in with Apple для отзыва пользовательских токенов.
— Недостаточно предоставить только возможность временного отключения или деактивации учетной записи. Люди должны иметь возможность удалить учетную запись вместе со своими личными данными.
— Приложения в строго регулируемых отраслях могут предоставлять дополнительные сервисы для облегчения процесса.
— Соблюдайте законодательные требования к хранению информации об учетных записях. Это включает в себя соблюдение местных законов в разных странах и регионах.
Также Apple рекомендуют проконсультироваться со своим юристом🧐.
Для чего нужны closures (замыкания) в Swift и как с ними работать?
📖 Замыкания - это мощная концепция, которая позволяет использовать множество различных шаблонов программирования.
Однако для многих начинающих программистов closures могут быть сложными в понимании и дальнейшем использовании.
Это особенно верно, когда замыкания используются в асинхронном контексте.
Например, когда они используются в качестве completion handlers или передаются в приложении, чтобы их можно было вызвать позже.
В своём посте автор объясняет, что такое замыкания в Swift, как они работают и, самое главное, показывает различные примеры замыканий с возрастающей сложностью.
🧐 К концу этой заметки автор обещает объяснить всё, что необходимо знать для эффективного использования замыканий в приложении.
💻 Если статья будет понятна не сразу, ничего страшного. Сlosures — это не самая простая тема, и вполне возможно, что придется детальнее посмотреть примеры, чтобы полностью усвоить материал.
@iOS Dev
📖 Замыкания - это мощная концепция, которая позволяет использовать множество различных шаблонов программирования.
Однако для многих начинающих программистов closures могут быть сложными в понимании и дальнейшем использовании.
Это особенно верно, когда замыкания используются в асинхронном контексте.
Например, когда они используются в качестве completion handlers или передаются в приложении, чтобы их можно было вызвать позже.
В своём посте автор объясняет, что такое замыкания в Swift, как они работают и, самое главное, показывает различные примеры замыканий с возрастающей сложностью.
🧐 К концу этой заметки автор обещает объяснить всё, что необходимо знать для эффективного использования замыканий в приложении.
💻 Если статья будет понятна не сразу, ничего страшного. Сlosures — это не самая простая тема, и вполне возможно, что придется детальнее посмотреть примеры, чтобы полностью усвоить материал.
@iOS Dev
Общие сведения о сертификатах и Provisioning Profiles в iOS
Нам не нужно разбираться в теории сертификатов и профилей, чтобы создать рабочее приложение для iOS. Но вполне вероятно, что вам, как инженеру, приходилось сталкиваться с загадочными ошибками подписания в какой-то момент в прошлом.
Хороший способ для понимания — сделать шаг в сторону от разработки и понять, как работает безопасный веб-серфинг (HTTPS, SSL, TLS).
🔐 Возможно, вы слышали о симметричной криптографии - механизме, позволяющим зашифровать сообщение с помощью специального секретного ключа, а затем расшифровать его с помощью того же ключа:
📖 В материале от SwiftRocks можно прочесть не только об этом, а ещё, например, про:
— Что такое центры сертификации?
— Как работают сертификаты в iOS?
— Что такое provisioning profiles?
Автор в шутку предполагает, что после прочтения вы будете главным специалистом компании по вопросам сертификатов! 😎
@iOS Dev
Нам не нужно разбираться в теории сертификатов и профилей, чтобы создать рабочее приложение для iOS. Но вполне вероятно, что вам, как инженеру, приходилось сталкиваться с загадочными ошибками подписания в какой-то момент в прошлом.
Хороший способ для понимания — сделать шаг в сторону от разработки и понять, как работает безопасный веб-серфинг (HTTPS, SSL, TLS).
🔐 Возможно, вы слышали о симметричной криптографии - механизме, позволяющим зашифровать сообщение с помощью специального секретного ключа, а затем расшифровать его с помощью того же ключа:
Plain message + key 1 = Encrypted message
Encrypted message + key 2 = Plain message
📖 В материале от SwiftRocks можно прочесть не только об этом, а ещё, например, про:
— Что такое центры сертификации?
— Как работают сертификаты в iOS?
— Что такое provisioning profiles?
Автор в шутку предполагает, что после прочтения вы будете главным специалистом компании по вопросам сертификатов! 😎
@iOS Dev
Как сортировать сразу по нескольким свойствам в Swift и избежать при этом pyramid of doom 😱
Сама по себе сортировка довольно проста, если вы делаете ее по одному критерию или одному свойству. В Swift уже есть функция для этого:
🤔Но может возникнуть ситуация, когда вам потребуется сортировка по нескольким критериям или свойствам.
📖 Именно об этом виде сортировки рассказывается в данной статье. Конечно, существует множество способов решения этой проблемы. При этом автор показывает один из самых простых подходов без каких-либо усложнённых концепций.
🧑💻 Вы сами сможете прокачать этот способ для требуемых задач, как только станут понятны основы.
@iOS Dev
Сама по себе сортировка довольно проста, если вы делаете ее по одному критерию или одному свойству. В Swift уже есть функция для этого:
let numbers = [3, 5, 6, 1, 8, 2]
let sortedNumbers = numbers.sorted { (lhs, rhs) in
return lhs < rhs
}
🤔Но может возникнуть ситуация, когда вам потребуется сортировка по нескольким критериям или свойствам.
📖 Именно об этом виде сортировки рассказывается в данной статье. Конечно, существует множество способов решения этой проблемы. При этом автор показывает один из самых простых подходов без каких-либо усложнённых концепций.
🧑💻 Вы сами сможете прокачать этот способ для требуемых задач, как только станут понятны основы.
@iOS Dev
3 способа использования enum, которые должны быть в вашем арсенале
💪 Перечисление (enum) - это очень мощный тип в Swift. Каждый из нас использует его практически в каждом проекте.
Сегодня я хотел бы поделиться некоторыми приемами работы с перечислениями в Swift, о которых могут знать не все.
🧐 Если у вас солидный бэкграунд, то вы будете в курсе, но освежить знания не помешает.
В публикации рассматривается три блока:
1️⃣ Сложные случаи с привязкой значений.
2️⃣ Если нас интересуют конкретный кейс перечисления, то можно использовать
3️⃣ Если связанное значение optional, то также можно использовать соответствующий шаблон. Это будет более понятно на конкретных примерах из статьи.
@iOS Dev
💪 Перечисление (enum) - это очень мощный тип в Swift. Каждый из нас использует его практически в каждом проекте.
Сегодня я хотел бы поделиться некоторыми приемами работы с перечислениями в Swift, о которых могут знать не все.
🧐 Если у вас солидный бэкграунд, то вы будете в курсе, но освежить знания не помешает.
В публикации рассматривается три блока:
1️⃣ Сложные случаи с привязкой значений.
2️⃣ Если нас интересуют конкретный кейс перечисления, то можно использовать
if let
и guard let
.3️⃣ Если связанное значение optional, то также можно использовать соответствующий шаблон. Это будет более понятно на конкретных примерах из статьи.
@iOS Dev
Конфигурация кнопок в iOS 15: основные стили и возможности кастомизации.
📖 Написал статью про кастомизацию кнопок в iOS 15, возможно, вы откроете для себя что-то новое.
Можно прочесть про основные стили, конфигурацию, а также, например, про то, как за 10 секунд добавить activityIndicator для кнопки.
📖 Написал статью про кастомизацию кнопок в iOS 15, возможно, вы откроете для себя что-то новое.
Можно прочесть про основные стили, конфигурацию, а также, например, про то, как за 10 секунд добавить activityIndicator для кнопки.
Telegraph
Конфигурация кнопок в iOS 15
В iOS 15 компания Apple значительно обновила кнопки. Мы можем создавать и обновлять конфигурации кнопок подобно изменениям, которые Apple ввела для ячеек коллекции и таблиц в iOS 14.