• Формируем View в SwiftUI, исходя из условий

    • Перевод
    Иногда нам нужно сформировать SwiftUI View, учитывая некоторые условия. Например, в приведенном коде мы определяем HomeView, который может содержать ProfileView, в случае если в LogInManager есть loggedInUser. Мы пытаемся это реализовать, используя стандартный оператор if:
    Читать дальше →
  • Swift 5.2 — что нового?

    • Перевод
    Первая бета Swift 5.2 только что появилась в Xcode 11.4 beta, и в ней произошли изменения в языке, наряду с сокращением размера кода и используемой памяти, а также появилась новая система диагностики, которая позволит быстрее выявлять ошибки.
    Читать дальше →
  • Протокольно-ориентированное программирование в Swift 5.1

    • Перевод
    • Tutorial
    Протоколы — фундаментальное свойство Swift. Они играют важную роль в стандартных библиотеках Swift и являются обычным способом абстракции кода. Во многом они похожи на интерфейсы в других языках программирования.

    В этом руководстве мы представим вам подход к разработке приложений, называемый «протокольно-ориентированным программированием», который стал практически основным в Swift. Это действительно то, что вам необходимо уяснить при изучении Swift!

    В этом руководстве вы:

    • поймёте разницу между объектно-ориентированным и протокольно-ориентированным программированием;
    • разберётесь со стандартной реализаций протоколов;
    • научитесь расширять функционал стандартной библиотеки Swift;
    • узнаете, как расширять протоколы при помощи дженериков.
    Читать дальше →
  • Microsoft закрывает программу монетизации рекламы в UWP-приложениях

      Сообщается, что 1 июня 2020 года программа монетизации рекламы в UWP-приложениях будет закрыта. В качестве причины указана неспособность продолжать поддерживать работу программы монетизации на текущем уровне.

      • Программа продолжит работу до 1 июня.
      • Доход разработчиков от показа рекламы, полученный до 31 мая, будет выплачен в рамках регулярных платежей.
      • Статистика показов рекламы будет доступна до 8 июня.

      Разработчикам рекомендуется начать поиски замены рекламной платформы.
    • SwiftUI: делаем Expandable/Collapsible секции в List view

      • Tutorial


      Нередко встречающаяся в разработке под iOS задача — раскрывающиеся/складывающиеся секции в UITableView. Сегодня мы реализуем эту задачу, используя SwiftUI. В качестве небольшого twist'a добавим анимированный треугольник в заголовке секции и сделаем ячейки также раскрывающимися.

      Разработка проходила на XCode 11.2 под macOS Catalina 10.15.1
      Поехали!
    • SwiftUI: знакомство

      • Перевод
      • Tutorial
      В этом руководстве мы научимся планировать UI приложения при помощи View и узнаем, как использовать переменные состояния (State variables) для модификации UI.

      Примерное время чтения публикации: 25 минут.
      Поехали!
    • Лига свободного Интернета

      • Перевод

      Как противостоять авторитарным режимам в Интернете



      Отключаемся? Женщина в пекинском интернет-кафе, июль 2011
      Im Chi Yin / The New York Times / Redux


      М-да, всё же придётся предварить «примечанием переводчика». Обнаруженный текст показался мне любопытным и дискуссионным. Единственные правки в тексте — это «болды». Cвоё личное отношение я позволил себе выразить в тегах.

      Эпоха возникновения Интернета была полна возвышенных надежд. Авторитарные режимы, вставшие перед выбором — стать частью новой системы глобальных коммуникаций или остаться за бортом, выберут подключение к ней. Рассуждая в розовых очках дальше: потоки новой информации и идей из «внешнего мира» неумолимо подтолкнут развитие в сторону экономической открытости и политической либерализации. Фактически произошло нечто совершенно противоположное. Вместо распространения демократических ценностей и либеральных идеалов Интернет стал основой шпионажа авторитарных государств по всему миру. Режимы в Китае, России и т.д. использовали инфраструктуры Интернета для построения своих собственных национальных сетей. В то же самое время они возвели технические и законодательные барьеры чтобы иметь возможность ограничивать доступ своих граждан к некоторым ресурсам и чтобы затруднить доступ западных компаний к своим цифровым рынкам.
      Читать дальше →
    • Чат на iOS: используем сокеты

      • Перевод
      • Tutorial

      Picture created by rawpixel.com

      В этой публикации мы опустимся на уровень TCP, изучим сокеты и средства Core Foundation на примере разработки приложения для чата.

      Приблизительное время чтения публикации: 25 минут.
      Читать дальше →
    • Swift: ARC и управление памятью

      • Перевод
      • Tutorial
      Будучи современным языком высокого уровня, Swift в основном берёт на себя управление памятью в ваших приложениях, занимаясь выделением и освобождением памяти. Это происходит благодаря механизму, который называется Automatic Reference Counting, или сокращенно ARC. В этом руководстве вы разберётесь, как работает ARC и как правильно управлять памятью в Swift. Понимая этот механизм, вы сможете влиять на время жизни объектов, размещенных в куче (heap).

      В этом руководстве вы прокачаете свои знания Swift и ARC, изучив следующее:

      • как работает ARC
      • что такое циклы ссылок (reference cycles) и как их правильно устранять
      • как создать пример цикла ссылок
      • как находить циклы ссылок при помощи визуальных средств, предлагаемых Xcode
      • как обращаться с ссылочными типами и типами-значениями
      Читать дальше →
    • Swift: решето Эратосфена

        Это будет совсем небольшая публикация, на которую меня вдохновила эта статья. Нет, я не собираюсь соревноваться с предложенным там решением (разве что в краткости), но, может быть, как демонстрация возможностей Swift, она будет интересна хабрасообществу.
        Читать дальше →
      • Таймер в iOS

        • Перевод
        • Tutorial
        Представьте, что вы работаете над приложением, в котором нужно периодически выполнять некоторые действия. Именно для этого в Swift используется класс Timer.

        Timer используется для планирования действий в приложении. Это может быть разовое действие или повторяющаяся процедура.

        В этом руководстве вы разберётесь, как в iOS работает таймер, как он может влиять на отзывчивость UI, как оптимизировать потребление батареи при использовании таймера и как использовать CADisplayLink для анимации.

        В качестве тестового полигона мы будем использовать приложение — примитивный планировщик задач.
        Читать дальше →
      • Собеседование: Swift. Вопросы и ответы

        • Перевод
        Языку программирования Swift всего четыре года, но он уже становится основным языком разработки для iOS. Развиваясь до версии 5.0, Swift превратился в сложный и мощный язык, отвечающий как объектно-ориентированной, так и функциональной парадигме. И с каждым новым релизом в нем добавляется еще больше возможностей.

        Но насколько хорошо вы на самом деле знаете Swift? В этой статье вы найдете примеры вопросов для собеседования по Swift.

        Вы можете использовать эти вопросы для интервьюирования кандидатов, чтобы проверить их знания или вы можете проверить свои собственные. Если вы не знаете ответа, не переживайте: к каждому вопросу есть ответ.
        Читать дальше →
      • Приложение в строке меню для macOS

        • Перевод
        • Tutorial
        Приложения, размещенные в строке меню, уже давно известны пользователям macOS. У некоторых из этих приложений есть «обычная» часть, другие размещены только в строке меню.
        В этом руководстве вы напишете приложение, которое показывает во всплывающем окне несколько цитат известных людей. В процессе создания этого приложения вы научитесь:

        • назначать иконку приложения в строке меню
        • делать приложение размещенным только в строке меню
        • добавлять пользовательское меню
        • показывать всплывающее по запросу пользователя окно и прятать его, когда необходимо, используя Event Monitoring

        Замечание: это руководство предполагает, что вы знакомы со Swift и macOS.
        Поехали!
        • +22
        • 5,7k
        • 2
      • Продвинутая интерполяция строк в Swift 5.0

        • Перевод


        Интерполяция строк была в Swift с ранних версий, но в Swift 5.0 этот функционал был расширен, стал быстрее и значительно мощнее.

        В этой статье мы пройдёмся по новым возможностям интерполяции строк и рассмотрим, как это можно применить в нашем собственном коде. Вы также можете загрузить исходники к этой статье здесь.
        Поехали!
        • +14
        • 6,6k
        • 1
      • Swift 5.1 — что нового?

        • Перевод


        Swift 5.0 стал доступен с выходом Xcode 10.2, но работа над следующей версией продолжается и уже есть известия о том, чего в ней можно ждать.

        Ключевая особенность Swift 5.1 — модульная стабильность (module stability), которая позволяет нам использовать сторонние библиотеки, не волнуясь о том, при помощи какой версии компилятора Swift они были созданы. Похоже на ABI stability, которую мы получили в Swift 5.0, но есть небольшая разница: ABI stability разрешает различия в версиях Swift на этапе выполнения, а module stability — на этапе компиляции.

        Кроме этого важного новшества мы получим несколько важных улучшений в Swift, и в этой статье мы пройдемся по ним с примерами, чтобы можно было увидеть их в деле.
        Что новенького в Swift 5.1?
        • +15
        • 9,3k
        • 9
      • Списки захвата в Swift: в чём разница между ссылками weak, strong и unowned?

        • Перевод

        Джозеф Райт, «Пленный» — иллюстрация «сильного» захвата

        Список «захваченных» значений находится перед списком параметров замыкания и может «захватить» значения из области видимости тремя разными способами: используя ссылки «strong», «weak» или «unowned». Мы часто его используем, главным образом для того, чтобы избежать циклов сильных ссылок («strong reference cycles» aka «retain cycles»).
        Начинающему разработчику бывает сложно принять решение, какой именно применить способ, так что вы можете потратить много времени, выбирая между «strong» и «weak» или между «weak» и «unowned», но, со временем, вы поймёте, что правильный выбор — только один.
        Давайте взглянем на проблему.
      • Приложение Дурак для Windows Store


          Поль Сезанн, «Игроки в карты»

          Давным-давно, в Windows 95 была игра Microsoft Hearts. Игра в карты по сети, с оппонентами по всему миру. Если мне не изменяет память, то в Windows for Workgroups 3.11 (да, я застал все эти артефакты!) была версия для игры по локальной сети, с использованием так называемого NetDDE.
          И мне захотелось сделать что-то похожее...