Pull to refresh

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

Reading time 2 min
Views 8.6K
Совсем недавно завершилась очередная WWDC, что является важным и заметным событиям для всех, кто работает с продукцией Apple, кто пишет для OS X и 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 *myNum = @12; // or
NSNumber * myNum = @(8+4);
NSDictionary *myDict = @{@"first" : @"one", @"second" : @"two"}; // Key:value without nil!
NSArray *myArr = @[@"one", @"two", @"three"];


Как подсказал мне 1101_debian теперь и обращаться к элементам массива или словаря можно гораздо удобнее:

myArr[0]
myArr[5]
myDict[@"Fuu"]


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


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

По материалам WWDC 2012.
Tags:
Hubs:
+14
Comments 41
Comments Comments 41

Articles