Скрытые возможности Xcode 5

в 3:30, , рубрики: cats, iOS, ipad, iphone, ipod, objective-c, Блог компании Бессвязный Девелоп, коты, котята, разработка, разработка под iOS, метки: , , , , , , , ,

Скрытые возможности Xcode 5Здравствуйте, уважаемые читатели!

Команде Бессвязного Девелопа удалось получить корпоративный аккаунт благодаря чудотворной программе Хабрахабра по поддержке начинающих стартапов без действующей монетизации. Мы — это ребята, которые частенько устраивают трансляции разработки различных приложений за 24 и 48 часов. Сегодня мы взяли курс на создание бесплатных аналогов нужных, но платных или обвешанных рекламой программ.

Чтобы наш приветственный пост не получился «Ни о чем», сегодня я расскажу о некоторых вкусностях работы с Xcode 5, подсмотренных на WWDC 2013. В программе вечера:

  1. Автодополнение кода: печенье, которое еще не все попробовали
  2. Edit in scope: сытный шоколадный тортик
  3. Объекты IB: назовите этот сорт клубничного желе
  4. Двойной статус-бар: подавайте шоколадный шейк охлажденным
  5. Color Blended Layers: вы неправильно наносите ромовый крем
  6. Concurrent Object Enumeration: покройте все сахарной пудрой
  7. Локализация: хватит каждый раз греть духовку


Скрытые возможности Xcode 5

Автодополнение кода

И так, вы дружите с Xcode уже больше пяти лет и думаете, что знаете о нем все? А что, если я скажу, что необязательно прописывать возвращаемый тип для инициализации автодополнения кода? Забудьте про:

image

Теперь можно писать вот так:

Скрытые возможности Xcode 5

Edit in scope

Положим, у нас есть простой метод, не претендующий ни на какую интеллектуальную значимость:

Скрытые возможности Xcode 5

Ошибка видна даже начинающему программисту: мы создали новую переменную number в зоне видимости уже существующей переменной с таким же именем. Можно, конечно, ручками поменять все названия. А что, если лень? А что, если нет времени? Но ведь можно использовать Cmd+F! Нет, нет и нет. Теперь можно навести курсор на переменную и увидеть маленький треугольничек рядом:

Скрытые возможности Xcode 5

Нажав на эту иконку, мы вызовем контекстное меню с заветным «Edit All in Scope»:

Скрытые возможности Xcode 5

Вот, как это выглядит в режиме реального времени:

Скрытые возможности Xcode 5

А для любителей горячих клавиш есть отдельное сочетание (Cmd+Control+E):

Скрытые возможности Xcode 5

Объекты IB

Я по служебному долгу частенько разбираюсь в чужом коде, а в частности, с чужими Storyboard'ами. В некоторых интерфейсах, собранных предыдущими разработчиками, черт ногу сломит. Я хочу сыграть с вами в игру: где какой UIView?

Скрытые возможности Xcode 5

Неожиданно? Но эту ситуацию можно запросто поправить! Ведь все элементы интерфейса можно называть как угодно. Пожалуйста, придерживайтесь хорошего тона и думайте о будущих разработчиках. Может, когда-нибудь, добро вернется к вам:

Скрытые возможности Xcode 5

Двойной статус бар

Говорите, ваше приложение идеально работает? Оно на 99,9% покрыто тестами, и вы даже поправили пару критических багов в Foundation? А что случится, если юзеру позвонят? Благо, у нас есть простой способ проверить. Симулятор поддерживает показ «расширенного» статус бара при звонке:

Скрытые возможности Xcode 5 Скрытые возможности Xcode 5

Чтобы правильно обрабатывать события входящего звонка и расширения статус бара, можно либо начать слушать NSNotificationCenter:

UIApplicationWillChangeStatusBarFrameNotification
UIApplicationDidChangeStatusBarFrameNotification

Либо реализовать следующие методы в вашем AppDelegate:

- (void)application:(UIApplication *)applicationwillChangeStatusBarFrame:(CGRect)newStatusBarFrame;
- (void)application:(UIApplication *)applicationdidChangeStatusBarFrame:(CGRect)oldStatusBarFrame;

Color Blended Layers

Всем, кто близок к программированию, очевидно, что прорисовывать прозрачные объекты сложнее, чем обрабатывать непрозрачные. Как минимум, девайсу нужно думать о фоне и тратить время на его прорисовку. Однако многие программисты пренебрегают, а некоторые даже не знают, как переводится свойство «opaque» (непрозрачный). Лучше так не делать.

Например, возьмем обычный белый UITableView и включим Color Blended Layers:

Скрытые возможности Xcode 5 Скрытые возможности Xcode 5

Красным симулятор показывает элементы с активным альфа каналом, зеленым — непрозрачные элементы. К сожалению, сейчас процессор тратит дополнительное время на то, чтобы прорисовать белый фон за прозрачным текстом. Решается это довольно просто, двумя действиями в Xcode — отмечаем галочку «Opaque» и делаем фон белым:

Скрытые возможности Xcode 5

После, все выглядит куда приятнее глазу:

Скрытые возможности Xcode 5

Стоит отметить, что, если вы используете картинку с альфа-каналом в своем приложении, то отметить галочкой «Opaque» будет недостаточно. Xcode уважает ваши прозрачные картинки (особенно, если это картинки котят), и даже если вы скажете ему, что картинка без прозрачности — иными словами, обманите его — он все равно поступит по чести и сделает картинку прозрачной. Когда нужно делать картинку непрозрачной — делайте это в каком-нибудь графическом редакторе. Xcode сможет обрабатывать картинку, как непрозрачную, только тогда, когда у картинки нет активного альфа-канала.

Скрытые возможности Xcode 5

Concurrent Object Enumeration

Все, что я хочу показать вам в этом пункте — это следующая пара строк кода:

NSArray *myObjects = ...;
[myObjects enumerateObjectsWithOptions:NSEnumerationConcurrent
    usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        // Сделайте что-нибудь с элементом массива
    }];

Особое внимание стоит обратить на свойство, которое мы передаем методу: «NSEnumerationConcurrent». Оно позволяет использовать все прелести многопоточного программирования при работе с массивом данных, не заморачиваясь с GCD или NSOperation.

Локализация

Если вы хоть раз переводили свое приложение на другие языки, то вам знакома эта боль с постоянным изменением настроек языка в симуляторе. Вы только посмотрите на это безобразие:

Скрытые возможности Xcode 5

Нет, так не пойдет. А что, если вам просто нужно поправить мелкий баг в одной из локалей? Переключаться туда и обратно — затратно по времени. Есть решение проще, быстрее, умнее! Можно создать несколько разных схем для билда, да чтобы у каждой схемы был свой язык. Заходим в настройки главной схемы:

Скрытые возможности Xcode 5

Жмем «Duplicate Scheme»:

Скрытые возможности Xcode 5

B добавляем два флага: "-AppleLanguages (ru)" и "-AppleLocale ru_RU" (названия локалей стоит погуглить, если не помните):

Скрытые возможности Xcode 5

Теперь мы можем мгновенно запускать наше приложение на разных языках, не заходя в настройки симулятора:

Скрытые возможности Xcode 5

Скрытые возможности Xcode 5

Заключение

Огромное спасибо, что дочитали до конца!

Я постараюсь почаще выкладывать разные интересности с WWDC на хабр: иногда проще потратить 10 минут на чтение текста, нежели 40 минут слушать Tech Talk с тем же количеством информации. Однако я крайне настаиваю на том, чтобы каждый iOS разработчик посмотрел хотя бы 2-3 видео с этих конференций для самообразования.

Кстати, тут ходят слухи, что следующая трансляция будет на Рождество (25 декабря) и мы попробуем создать «клон-убийцу» платных приложений типа «Heads Up» из App Store. Естественно, с русской локлизацией.

Вот такие мы — команда Бессвязного Девелопа: с тучей картинок, гифок и котят.

P.S. если вы нашли ошибку или опечатку в тексте — обязательно напишите в мой хабрацентр.

Автор: backmeupplz

Источник



https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js