Как стать автором
Обновить
43.82

Swift *

Открытый объектно-ориентированный язык

Сначала показывать
Порог рейтинга
Уровень сложности

«Программирование мышкой» в Swift ч.2 — навигация

Время на прочтение8 мин
Количество просмотров22K
И снова привет, хабаровчане!

Развивая тему предыдущей статьи, пишу о программировании навигации между окнами вашего приложения с использованием минимума кода. Сразу хочу упомянуть, статья пишется для новичков, если вы в этом деле опытный разработчик — вряд ли она что-то вам даст.

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии3

Обработка ошибок в Swift — меч и магия

Время на прочтение5 мин
Количество просмотров17K
Если издали видно общую картину, то вблизи можно понять суть. Концепции, которые казались мне далекими и, прямо скажем, странными во время экспериментов с Haskell и Scala, при программировании на Swift становятся ослепительно очевидными решениями для широкого спектра проблем.

Взять вот обработку ошибок. Конкретный пример – деление двух чисел, которое должно вызвать исключение если делитель равен нулю. В Objective C я бы решил проблему так:

NSError *err = nil;
CGFloat result = [NMArithmetic divide:2.5 by:3.0 error:&err];
if (err) {
    NSLog(@"%@", err)
} else {
    [NMArithmetic doSomethingWithResult:result]
}

Со временем это стало казаться самым привычным способом написания кода. Я не замечаю, какие загогулины приходится писать и как косвенно они связаны с тем, что я на самом деле хочу от программы:

Верни мне значение. Если не получится – то дай знать, чтобы ошибку можно было обработать.

Я передаю параметры, разыменовываю указатели, возвращаю значение в любом случае и в некоторых случаях потом игнорирую. Это неорганизованный код по следующим причинам:

  • Я говорю на машинном языке – указатели, разыменование.
  • Я должен сам предоставить методу способ, которым он уведомит меня об ошибке.
  • Метод возвращает некий результат даже в случае ошибки.

Каждый из этих пунктов – источник возможных багов, и все эти проблемы Swift решает по-своему. Первый пункт, например, в Swift вообще не существует, поскольку он прячет под капотом всю работу с указателями. Остальные два пункта решаются с помощью перечислений.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии27

Многоликие функции Swift

Время на прочтение16 мин
Количество просмотров43K
Русский перевод очень полезной статьи Natasha Murashev The Many Faces of Swift Functions.

Хотя у Objective-C синтаксис выглядит несколько странно, по сравнению с другими языками программирования, синтаксис метода — прост и понятен. Вот небольшой экскурс в прошлое:

+ (void)mySimpleMethod
{
    // метод "класса"
    // нет параметров
    // нет возвращаемых значений
}

- (NSString *)myMethodNameWithParameter1:(NSString *)param1 parameter2:(NSNumber *)param2
{
    // метод "экземпляра"
    // первый параметр - типа NSString указатель, 
    // второй параметр  - типа NSNumber указатель
    // должен вернуть значение типа NSString указатель
    return @"hello, world!";
}


В противоположность этому, синтаксис Swift выглядит в большинстве случаев также, как и в других языках программирования, но временами он может быть более сложным и запутанным, чем в Objective-C.

Прежде чем я продолжу, я хочу прояснить разницу между «методами» и «функциями» в Swift, так как я повсеместно буду использовать оба этих термина в этой статье. Вот определение «методов», данное в книге Apple «Swift Programming Language»:

Читать дальше →
Всего голосов 38: ↑31 и ↓7+24
Комментарии27

Стэнфордские курсы «Разработка iOS приложений» — неавторизованный конспект лекций на русском языке и 2015?

Время на прочтение5 мин
Количество просмотров50K


Я разместила иконки курсов Стэнфордского университета по разработке приложений на iOS в обратном хронологическом порядке. На первом месте стоит иконка Swift — нового языка программирования для создания приложений на iOS, объявленного на WWDC 2014. Кроме Swift реализована новая версия iOS — iOS 8. Уже известно, что Стэнфордский университет запустит зимой 2015 года новый курс CS193P с неизвестным пока названием (может быть будет что-то вроде «Developing iOS 8 Apps for iPhone and iPad»). Лектор тот же — профессор Paul Hegarty.
В традиции Стэнфорда выкладывать курс CS193P на iTunes U в виде бесплатного курса обучения, но делают это они со сдвигом во времени, чтобы не мешать платному обучающему процессу, так что в феврале-марте 2015 года (как это было в 2013 году) можно ожидать постепенное появление лекций на iTunes U. Так что время есть.
Я прошла почти все курсы профессора Пола Хэгарти — от iOS 5 до iOS 7 — до самого конца (смотри Github ).
Для подготовки к перспективному курсу по iOS 8 разместила на своем сайте «Разработка iOS приложений» неавторизованные конспекты лекций, тексты домашних заданий и примеры их решения на русском языке для последнего доступного в настоящее время обучающего курса «Developing iOS 7 Apps for iPhone and iPad», запущенного Стэнфордским университетом в семестре «осень 2013 — зима 2014 года» на iTunes U.

Читать дальше →
Всего голосов 21: ↑16 и ↓5+11
Комментарии7

Истории

Реактивное программирование на Swift

Время на прочтение1 мин
Количество просмотров16K
В конце октября в Москве прошла наша первая конференция мобильных разработчиков #MBLTDev. 17 докладчиков из Англии, Германии, Голландии, Дании, России и США пришло послушать более 300 человек.

Мы будем постепенно выкладывать записи докладов с презентациями и начнем с доклада канадского блоггера Эша Фюрроу «Реактивное программирование на Swift». Помимо ведения блога, Эш является iOS-разработчиком онлайн галереи Artsy и автором нескольких книг про iOS-разработку.


Презентация

В своем докладе Эш познакомил аудиторию с основами фреймворка ReactiveCocoa, проиллюстрировав их примерами на Swift. Также, он рассказал о приложении, над которым он в данное время работает в Artsy с использованием этих инструментов. Приложение, что примечательно, с открытым исходным кодом и доступно на GitHub.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии3

Учить Swift теперь стало проще

Время на прочтение1 мин
Количество просмотров27K
После того, как Apple представила абсолютно новый язык программирования Swift, он не перестает быть предметом активного обсуждения на форумах разработчиков и в курилках dev-конференций. Учить язык можно уже сейчас — Apple соорудила подробный мануал по своему детищу. Правда, только на английском.

Недавно к нам обратился клиент, который хотел исправить этот недостаток и перевести документацию по Swift на русский язык. Благо переводчикам в Alconost не привыкать к задачам по техническому переводу с обилием IT-шной терминологии. Результат порадовал и нас, и клиента: первые главы уже ждут читателей по этой ссылке, вэлкам!

Мы надеемся, что наши усилия по переводу будут востребованы разработчиками. Да и хаб по Swift не зря на Хабре появился. И все же интересно узнать ваше мнение:
Всего голосов 41: ↑31 и ↓10+21
Комментарии18

«Программирование мышкой» в XCode 6 для Swift

Время на прочтение5 мин
Количество просмотров53K
Привет, Хабрахабр!

По причине недавно возникшей необходимости, пришлось писать под iOS, и я заметил сильную нехватку гайдов на русском языке даже для элементарных действий вроде «прицепить к нажатию кнопки какое-то действие», «считать данные из текстового окошка». Статья для начинающих разработчиков под iOS, прошу таких под кат.
Читать дальше →
Всего голосов 32: ↑26 и ↓6+20
Комментарии27

Как написать собственное приложение с REST API Яндекс.Диска

Время на прочтение11 мин
Количество просмотров44K
Всем привет! Меня зовут Клеменс Ауэр, я занимаюсь разработкой десктопной версии Яндекс.Диска. Когда появился новый REST API, я был настолько впечатлен открывшимися возможностями, что в свободное время начал писать на его основе SDK для нового языка Swift. Я решил рассказать о своем опыте работы новым API и выступил с небольшим докладом о том, как просто начать с его помощью писать собственное приложение. Доклад был на английском, но по-русски я тоже говорю, хотя не так хорошо. На основе своего выступления я подготовил сегодняшний пост, с которым мне помогали мои коллеги.



Начать я хотел бы с некоторых общих вещей о Диске — скорее всего, большую часть из этого вы уже слышали. Затем я расскажу, почему же меня так впечатлил новый API и чем он отличается от WebDAV. Ну а ближе к концу я поделюсь опытом того, как начать разрабатывать под новый API, и разберу несколько примеров своего кода. Его будет совсем немного, но с новым API, чтобы заставить что-то работать, код писать практически не требуется.
Читать дальше →
Всего голосов 41: ↑38 и ↓3+35
Комментарии12

Создание Today Extension для iOS 8

Время на прочтение14 мин
Количество просмотров19K
С выходом iOS 8 компания Apple представила новою концепцию под названием App Extensions, с помощью которой, Вы сможете делиться функциональностью Вашего приложения с другими приложениями, и из самой ОС.

Один из этих типов расширений являются Today Extensions, также известные как Widgets. Они предоставляют Вам возможность отображать информацию в Центр Уведомления, который является отличным способом предоставления самой актуальной информации, которой интересуется пользователь.

В этой статье, Вы напишете приложение на основе расширения Today Extension, которое представит текущую рыночную стоимость Bitcoin на основе доллара США.

Еще никогда не было так просто и так быстро предоставлять нужную информацию для Ваших пользователей. Давайте начнем!
Читать дальше →
Всего голосов 20: ↑15 и ↓5+10
Комментарии10

Кортежи в Swift

Время на прочтение7 мин
Количество просмотров32K
В поиске информации о работе с Кортежами (Tuples) в Swift работая над своим приложением, я решил, что будет лучше объединить в одну статью всю информацию, которую я изучил или нашел, чтобы ее можно было легко использовать.

Кортежи в основном являются значением, которое может содержать несколько других значений. Составной тип может содержать также “именованные типы”, которые включают в себя классы, структуры и перечисления (также протоколы, но так как они не хранят значения непосредственно, я знал, что должен упомянуть их отдельно), а также другие составные типы. Это означает, что кортеж может содержать другие кортежи. Другой составной тип, который может содержать кортеж, является “функциональным типом”, который различным способом ссылаться на тип. Он описывает замыкания в частности стиля типа “() >() ”, чьи функции и методы соответствуют ему. Также функциональный тип может содержать другие составные типы, как кортеж, и замыкания, про которые Вы читали в моем предыдущем посте "Замыкание и Определение в Swift".
Читать дальше →
Всего голосов 12: ↑8 и ↓4+4
Комментарии0

Использование дженериков в Swift

Время на прочтение16 мин
Количество просмотров18K
Если Вы уже разобрались, как программировать на Swift, тогда Вы наверняка уже знаете основы языка Swift и как писать классы и структуры. Но Swift — больше, чем это — намного больше. Задача этой статьи расскажать о очень сильной стороне языка Swift, которая уже успела стать популярной в нескольких других языках под названием дженерики.
Читать дальше →
Всего голосов 30: ↑12 и ↓18-6
Комментарии3

Открытая лекция по основам Swift от MasterUp

Время на прочтение1 мин
Количество просмотров7.2K


Рады объявить, что шестого октября мы стартуем наш второй Swift-курс!

Этим летом мы не сидели сложа руки, а тщательно анализировали опыт преподавания курса по objective C для платформы iOS. Мы смогли выделить 3 главных параметра, которые являются основой для нашего нового курса: детализация всех аспектов разработки используя swift, практичность лекционных материалов и курсового проекта, мега-импульс интереса к платформе и новому языку программирования.

Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии6

Использование NSURLProtocol в Swift

Время на прочтение21 мин
Количество просмотров10K
NSURLProtocol является своего рода волшебным ключом к URL. Он позволяет Вам переопределить работу системы загрузки URL, компания Apple определяет пользовательские схемы URL и переопределяет работу существующих схем URL.

Это кажется волшебным? Так и должно быть. Потому что, если Вы их поищете, то обнаружите что URL, практически как и любовь, вокруг нас. Что используют UIWebView или WKWebView? Они используют URL. Что используется для трансляции видео с MPMoviePlayer? Для этого используется URL. Как Вы направляете кого-то в свое приложение на iTunes, запускаете FaceTime или Skype, запускаете другое приложение в системе или даже вставка изображение в HTML файле? С помощью URL. Загляните на NSFileManager и обратите внимание на то, для какого количества методов обработки файлов необходимы URL.

В этой статье про NSURLProtocol Вы научитесь определять обработчика протокола, который модифицирует URL схемы. Он добавит необработанный и готовый прозрачный слой кэширования, сохраняя извлеченные ресурсы в Core Data. Запуская его в работу, обычный UIWebView может тогда взять на себя роль браузера, кэшируя загруженные страницы, чтобы можно было позже просмотреть их в оффлайн режиме.

Читать дальше →
Всего голосов 7: ↑5 и ↓2+3
Комментарии0

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Запись первой лекции Swift-Курса от MasterUp

Время на прочтение1 мин
Количество просмотров8.7K


Слайды: www.dropbox.com/s/eqnozeeysd7rmzs/MU110-1.pdf?dl=0.
Расписание следующих лекций swift.master-up.net/#schedule
Всего голосов 25: ↑17 и ↓8+9
Комментарии2

Руководство по анимационному отображению представлений в таблице на Swift

Время на прочтение9 мин
Количество просмотров12K
Стандартный UITableView – мощный и в тоже время гибкий способ для представления данных в Ваших приложениях; есть вероятность, что большинство приложений, которые Вы создаёте, будут использовать табличное представление в той или иной форме. Тем не менее, есть недостаток в том, что без некоторого уровня настройки, приложения будут выглядеть бледно и сливаться с тысячами подобных. Во избежание “скучных” таблиц, Вы можете добавить несколько подходящих анимационных изображений, которые «оживлять» приложение. Возможно, Вы видели подобное в приложении Google+, где ячейки в таблице буквально летают по экрану вместе с классной анимацией. Если не обращали на это внимания, Вы можете скачать здесь (бесплатно)! Также может быть полезным и интересным ознакомление с руководством по дизайну (design guidelines), которое Google выпустило на конференции 2014 I/O. Оно содержит много советов и примеров, как эффективно и правильно использовать анимацию в своих приложениях.

Читать дальше →
Всего голосов 8: ↑6 и ↓2+4
Комментарии3

Открытая лекция по основам Swift от MasterUp

Время на прочтение1 мин
Количество просмотров8.1K


Рады объявить, что первого сентября мы стартуем наш Swift-курс!

Этим летом мы не сидели сложа руки, а тщательно анализировали опыт преподавания курса по objective C для платформы iOS. Мы смогли выделить 3 главных параметра, которые являются основой для нашего нового курса: детализация всех аспектов разработки используя swift, практичность лекционных материалов и курсового проекта, мега-импульс интереса к платформе и новому языку программирования.

Читать дальше →
Всего голосов 30: ↑20 и ↓10+10
Комментарии4

Секреты скорости Swift

Время на прочтение8 мин
Количество просмотров35K
С момента анонса языка Swift скорость была ключевым элементом маркетинга. Еще бы – она упоминается в самом названии языка (swift, англ. — «быстрый»). Было заявлено, что он быстрее динамических языков наподобие Python и Javascript, потенциально быстрее Objective C, а в некоторых случаях даже быстрее, чем C! Но как именно они это сделали?

Спекуляции


Несмотря на то, что сам язык предоставляет огромные возможности для оптимизации, у нынешней версии компилятора с этим не все в порядке, и получить хоть какие-то успехи в тестах производительности стоило мне немало сил. В основном это происходит из-за того, что компилятор генерирует массу излишних действий retain-release. Думаю, что это быстро поправят в следующих версиях, но пока мне придется говорить о том, благодаря чему Swift может быть потенциально быстрее Objective C в будущем.

Более быстрая диспетчеризация методов


Как известно, каждый раз, когда мы вызываем метод в Objective C, компилятор транслирует его в вызов функции objc_msgSend, которая занимается поиском и вызовом нужного метода в рантайме. Она получает селектор метода и объект, в таблицах методов которого производится поиск непосредственного куска кода, который будет обрабатывать этот вызов. Функция работает очень быстро, но зачастую делает куда больше работы, чем действительно нужно.

Передача сообщений удобна тем, что компилятор не делает никаких предположений относительно того, какой объект попадется ему в рантайме. Это может быть экземпляр типа выражения, дочерний класс, или вообще абсолютно другой класс. Компилятор можно обмануть, и все будет работать как положено.

С другой стороны, в 99.999% случаев вы не будете врать компилятору. Когда объект объявлен как NSView *, это либо непосредственно NSView, либо дочерний класс. Динамическая диспетчеризация необходима, а вот настоящая пересылка сообщений практически не нужна, но природа Objective C заставляет всегда использовать самый «дорогой» вид вызовов.
Читать дальше →
Всего голосов 46: ↑37 и ↓9+28
Комментарии13

От Objective-C к Swift. Рекомендации

Время на прочтение10 мин
Количество просмотров41K
Swift это новый язык программирования от компаний Apple, который она презентовала в этом году на WWDC. Вместе с языком программирования, Apple выпустила отличный справочник по языку Swift, который я рекомендую прочитать или ознакомиться с ним. Тем не менее, читать книгу это очень долго! Так что если у Вас нет много времени и Вы просто хотите узнать о новом языке Swift, то эта статья для Вас.

В данной статье я бы хотел поделиться некоторыми размышлениями по поводу перехода от Objective-C к Swift. Я постараюсь дать Вам несколько советов и указать на недостатки при разном подходе к обеим языкам. Поэтому без лишних отступлений, перейдем к самой статье.
Читать дальше →
Всего голосов 23: ↑14 и ↓9+5
Комментарии9

От прототипа до прототипа, от прототипа до прототипа, от прототипа до… мусорки

Время на прочтение18 мин
Количество просмотров10K
Захотел разработать небольшое приложение — Qtty. Приложение должно уметь делать снимок и применять набор фильтров к нему, после чего публиковать этот самый снимок в качестве основной фотографии в профиле ВКонтакте.
Автор будет пробовать делать всё через прототипы, так как это делали в 223 сессии WWDC 2014.

Много картинок. Осторожно!
Всего голосов 26: ↑15 и ↓11+4
Комментарии18

Классы в Swift [Часть 1]

Время на прочтение4 мин
Количество просмотров30K
Недавно Apple представила общественности достаточно важное изменение в разработке iOS приложений, анонсировав новый язык программирования Swift. В настоящее время, количество материалов на русском, посвящённых этому языку, ограничено. Также Swift — язык объектно-ориентированный, и классы в нём — основа основ. Поэтому я решил перевести эту статью.


Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии16