Новые плюшки в xCode и Objective-C

в 11:18, , рубрики: apple, iOS, osx, wwdc 2012, разработка под iOS, метки: , , ,

Совсем недавно завершилась очередная WWDC, что является важным и заметным событиям для всех, кто работает с продукцией Apple, кто пишет для OSX и iOS, для Safari и так далее. Мне бы хотелось поделиться понравившимися мне новинками в IDE xCode и в языке Objective-C.

Начну с языка. Итак у нас появились новые абстракции — литералы (Literals) которые позволяют гораздо легче и удобнее описывать такие типы данных как числа, словари (dictionary) и массивы (array).
Сравним:

NSNumber *myNum = [NSNumber numberWithInt:12];
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"one", @"first", @"two", @"second", nil];
NSArray *myArr = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];

И в новом варианте:

NSNumber = @12; // or
NSNumber = @(8+4);
NSDictionary = @{@"first" : @"one", @"second" : @"two"}; // Key:value without nil!
NSArray = @[@"one", @"two", @"three"];

По моему — намного удобнее и нагляднее. Мне чем-то напомнило Perl, который для меня является эталоном грамотной организации языка, лаконичный и удобный. И еще одно маленькое изменение, теперь при наборе NSS подсказка предложит NSString в первую очередь! Я поинмаю, почему это вызвало аплодисменты на презентации :)
Далее — объявление свойств в классе. Теперь не надо задавать @synthetize, он будет задан по умолчанию. То есть достаточно просто объявить свойство в интерфейсе.

@property(copy) NSString *myString;

Очень много нового добавили в поиск. Возможность поиска по регулярному выражению или по составлению правил (и, или, не...), поиск и замена только в выделенном фрагменте и многое другое. Надо пробовать все это ручками.
Очень много изменений произошло в визуальном редакторе интерфейса (interface builder). Теперь вся работа с расположением, размерами элементов, правилами их масштабирования и выравнивания при изменении ориентации выполняется намного проще и нагляднее. Хотя, конечно, надо бы привыкнуть.
Так же более информативными стали сообщения об ошибках и предупреждения. Теперь они показывают на конкретное место в строке, где есть проблема. Ну и до кучи, при автозавершении кода тоже есть контекстная помощь, пока не знаю так ли это нужно.
Добавили автоматическую чистку пробелов к конце строк, так же улучшили анилизатор кода, который и раньше помогла избавиться от массы возможных memory leaks, особенно в больших проектов писанных «всеми и никем».
В систему управления версиями добавили возможность исключать выделенный фрагмент из текущего коммита. По мне — очень удобная функция при разумном использовании.
В перспективе обещается отказ от поддержки C++ и, как следствие, избавление от его компилятора и отладчика. Я не пользую в своей работе этот язык, так что мне сложно судить, насколько это будет во благо. Для развития xCode и Objective-C — безусловно это плюс, не надо тащить дальше с собой совместимость, для тех, кто писал и пишет для железа Apple на С++, вряд ли это так уж хорошо, да и некоторые сторонние библиотеки написаны на C++ и мало шансов, что авторы ринутся переводить их на Objective-C.
В общем изменений много, большинство полезные и ожидаемые, осталось дождаться релиза нового xCode что бы начать со всем этим работать.
Вполне возможно, что я что-то упустил, так что буду рад вашим комментариям.

По материалам WWDC 2012.

Автор: CyberTor

* - обязательные к заполнению поля