Лекция 3 CS193P Spring 2016 — Больше Swift и Фреймворк Foundation.

На Лекции 3 профессор говорит по большей части о слое, который лежит под слоем пользовательского интерфейса (UI). А именно о языке Swift и о фреймворке Foundation, который “живет” в верхней части Core Services. В этой лекции вообще нет ничего о UI. 

Лекция начинается с подробного рассказа о том, что представляет собой Optional и как интерпретировать такой «синтаксический сахар» для него, как ?, !  и ??, а также «цепочки» Optional. Кратко представлены кортежи (tuples) и диапазоны  Range<T> .

Затем анализируются основные структуры данных в Swift : class, struct, enum. Обсуждается их сходство и различия. Особенное внимание уделено семантике value type и reference type. Подробно представлен синтаксис именования параметров функций в Swift. Рассматриваются самые «крутые» возможности свойств: наблюдатели  willSet{} и didSet {} и отложенная инициализация lazy. Уделено должное внимание массивам Array<T>,  словарям Dictionary <Key, Value>, строкам String и их интересным методам.

Apple проделало сверхъестественную работу по взаимозаменяемости («bridging») Swift массивов Array, словарей  Dictionary,  Int,  Double и структур данных Objective-С:  NSArray, NSDictionary, NSString … .  Как только вы вызываете функцию, требующую, чтобы параметр был одним или другим, то взаимозаменяемость работает автоматически и “магически”. В лекции показано, как можно пользоваться преимуществами этой взаимозаменяемости («bridging»).

В Лекции 3 очень основательно рассказывается об инициализации, но так, чтобы, по возможности, ее можно было бы избежать.

Использованию специального типа AnyObject уделено особое внимание. В версии iOS 9 он встречается редко и используется только как средство совместимости со старыми Objective-C APIs  или как «непрозрачный» объекта типа Property List в NSUserDefaultsЕсли вы строите любую структуру данных только из классов, вы получаете Property List. Но это просто термин. Как с работать с этой абстракцией показано в демонстрационном примере создания «программируемого калькулятора». Код «программируемого калькулятора» по просьбе профессора размещен в Задании 1 на  Github для Xcode 7 и Swift 2.2. Для Swift 3.0  и Xcode 8 код находится на Github, а для Swift 3 .2  и Xcode 9 — также на Github.

Лекция 3 и слайды на английском языке находятся на  iTunes название “3. More Swift and Foundation Framework.”

Русскоязычный неавторизованный конспект лекции 3, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также Google Doc доступны на платной основе.

Лекция 3 CS193P Spring 2016 — Больше Swift и Фреймворк Foundation.: 17 комментариев

  1. Татьяна, подскажите пож., в 3 лекции часто упоминаются задания на чтение, что это за задания? В домашних заданиях упоминается доп. материал, это о нем речь?

    • Задания на чтение или Reading Assignments находятся на iTunes U или здесь. В них профессор указывает порядок изучения синтаксиса языка Swift, ссылаясь на «родную» документацию Apple по Swift «Swift Programming Language«. Эти Задания на чтение являются путеводителем по чтению документации: что прочитать в первую очередь, а что отложить на потом. Это заставляет студентов подготовиться к восприятию Лекции, которую он читает. Задания на чтение на английском, и я не стала их переводить, потому что там в основном ссылки на документацию, хотя, конечно, есть очень полезные замечания.

  2. Татьяна, очень понравились Ваши первые две лекции. Перевод просто отличный. Хочу купить следующие лекции. Живу в Германии. Имею MasterCard. Но оплата в рублях не получилась. Есть ли какие-нибудь другие варианты для иностранцев?

  3. А правильно ли я понимаю, что конструктор класса CalculatorBrain() несёт в себе два процесс instantiation и initialization ? в которой instantiation это создание экземпляра класса на основе макета ?

  4. Правильно я ли я понял PropertyList — это к примеру Array с элементами типа Anyobject или же Dictionary with value type AnyObject, где мы аккумулируем определённые данные для того, что к примеру возобновить настройки нашего приложения после того, как юзер закрыл его и запустил заново. ?

  5. Здравствуйте,а касательно создания enum’в.
    Получается, что если мы сделали макет enum’a:

    enum Direction : String {
    case Left = «left»
    case Right = «right»
    }

    то var direction = Direction.Left — это процесс инициализации ? так же как при создание instance of classes: var cat = Cat() ?

    • Все верно, но вы выбрали простейший вариант без ассоциированных значений. Теперь попробуйте все повторить с ассоциированными значениями, как профессор.

      • Спасибо.

        С более сложными всё понятнее, касательно процесса инициализации к примеру, как в данном случае с rawValue
        var direction = Direction(rawValue: «right»)

        и узнал интересный момент, что если у enum назначен rawValue, то уже нельзя элементам enum’a задать associated value

  6. Доброго дня!
    Живу в Україні оплата MasterCard в рублях із карти приват банку не пройшла.
    Можливо у Вас є ще варіанті оплати?

  7. Татьяна, можно и мне варианты как вам можно оплатить за доступ к файлам. Пробовал оплатить с двух карт(обе зарубежных банков), платеж не проходит.

  8. Где вообще написано о цене, платности курса и тд?
    Как мне вообще об этом узнать?

Обсуждение закрыто.