iOS. Приемы программирования - [11]

Шрифт
Интервал

>@"String 1",

>@"String 2",

>@"String 3"

>];


>__unused NSString *firstString = stringsArray[0];

>__unused NSString *secondString = stringsArray[1];

>__unused NSString *thirdString = stringsArray[2];

Макрос __unused приказывает компилятору «не жаловаться», когда переменная — в нашем случае переменная firstString — объявлена, но ни разу не использовалась. По умолчанию в такой ситуации компилятор выдает в консоль предупреждение, сообщающее, что переменная не используется. В нашем кратком примере мы объявили переменные, но не задействовали их. Поэтому, если добавить вышеупомянутый макрос в начале объявления переменной, это вполне устроит и нас, и компилятор.

Изменяемый массив — это такой массив, в который можно вносить изменения уже после того, как он был создан. Как мы видели ранее, неизменяемый массив не может быть дополнен новой информацией уже после создания. Вот пример неизменяемого массива:


>NSString *string1 = @"String 1";

>NSString *string2 = @"String 2";

>NSString *string3 = @"String 3";


>NSArray *immutableArray = @[string1, string2, string3];


>NSMutableArray *mutableArray = [[NSMutableArray alloc]

>initWithArray: immutableArray];


>[mutableArray exchangeObjectAtIndex:0 withObjectAtIndex:1];

>[mutableArray removeObjectAtIndex:1];

>[mutableArray setObject: string1 atIndexedSubscript:0];

>NSLog(@"Immutable array = %@", immutableArray);

>NSLog(@"Mutable Array = %@", mutableArray);

>Вывод этой программы таков:

>Immutable array = (

>«String 1»,

>«String 2»,

>«String 3»

>)

>Mutable Array = (

>«String 1»,

>«String 3»

>)


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


>NSDictionary *personInformation =

>@{

>@"firstName": @"Mark",

>@"lastName": @"Tremonti",

>@"age": @30,

>@"sex": @"Male"

>};


>NSString *firstName = personInformation[@"firstName"];

>NSString *lastName = personInformation[@"lastName"];

>NSNumber *age = personInformation[@"age"];

>NSString *sex = personInformation[@"sex"];


>NSLog(@"Full name = %@ %@", firstName, lastName);

>NSLog(@"Age = %@, Sex = %@", age, sex);

>А вот и вывод этой программы:

>Full name = Mark Tremonti

>Age = 30, Sex = Male


Можно также использовать изменяемые словари, которые довольно сильно похожи на изменяемые массивы. Содержимое изменяемого словаря можно изменить после того, как словарь инстанцирован. Пример:


>NSDictionary *personInformation =

>@{

>@"firstName": @"Mark",

>@"lastName": @"Tremonti",

>@"age": @30,

>@"sex": @"Male"

>};


>NSMutableDictionary *mutablePersonInformation =

>[[NSMutableDictionary alloc] initWithDictionary: personInformation];

>mutablePersonInformation[@"age"] = @32;


>NSLog(@"Information = %@", mutablePersonInformation);

>Вывод этой программы таков:

>Information = {

>age = 32;

>firstName = Mark;

>lastName = Tremonti;

>sex = Male;

>}


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


>NSSet *shoppingList = [[NSSet alloc] initWithObjects:

>@"Milk",

>@"Bananas",

>@"Bread",

>@"Milk", nil];


>NSLog(@"Shopping list = %@", shoppingList);

>Запустив эту программу, вы получите следующий вывод:

>Shopping list = {(

>Milk,

>Bananas,

>Bread

>)}


Обратите внимание: элемент Milk упомянут в программе дважды, а в множество добавлен всего один раз. Эта черта множеств — настоящее волшебство. Изменяемые множества можно использовать и вот так:


>NSSet *shoppingList = [[NSSet alloc] initWithObjects:

>@"Milk",

>@"Bananas",

>@"Bread",

>@"Milk", nil];


>NSMutableSet *mutableList = [NSMutableSet setWithSet: shoppingList];


>[mutableList addObject:@"Yogurt"];

>[mutableList removeObject:@"Bread"];

>NSLog(@"Original list = %@", shoppingList);

>NSLog(@"Mutable list = %@", mutableList);

>А вывод будет таким:

>Original list = {(

>Milk,

>Bananas,

>Bread

>)}

>Mutable list = {(

>Milk,

>Bananas,

>Yogurt

>)}


Обсуждая множества и коллекции, следует упомянуть еще два важных класса, о которых вам необходимо знать:

NSOrderedSet — неизменяемое множество, учитывающее, в каком порядке в него добавлялись объекты;

• NSMutableOrderedSet — изменяемый вариант вышеупомянутого изменяемого множества.

По умолчанию множества не учитывают, в каком порядке объекты в них добавлялись. Рассмотрим пример:


>NSSet *setOfNumbers = [NSSet setWithArray:@[@3, @4, @1, @5, @10]];

>NSLog(@"Set of numbers = %@", setOfNumbers);

>Запустив эту программу, получим на экране следующий вывод:

>Set of numbers = {(

>5,

>10,

>3,

>4,

>1

>)}


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


>NSOrderedSet *setOfNumbers = [NSOrderedSet orderedSetWithArray

>:@[@3, @4, @1, @5, @10]];


>NSLog(@"Ordered set of numbers = %@", setOfNumbers);

>Разумеется, вы можете воспользоваться и изменяемой версией упорядоченного множества:

>NSMutableOrderedSet *setOfNumbers =

>[NSMutableOrderedSet orderedSetWithArray:@[@3, @4, @1, @5, @10]];


>[setOfNumbers removeObject:@5];

>[setOfNumbers addObject:@0];


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi».В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.


Автостопом по Python

Перед вами — увлекательная книга, которую по достоинству оценит любой неравнодушный программист и даже бывалый питонщик. Она составлена на основе одноименного онлайнового руководства http://docs.python-guide.org/en/latest/ и содержит наработки многочисленных профессионалов и энтузиастов, знающих, что такое Python, и чего вы от него хотите. Проверенные методы и новейшие приемы, собранные в этой книге, помогут вам стать профессиональным Python-программистом и во всеоружии встретить наступающую эпоху Python 3.


Философия DevOps. Искусство управления IT

IT-принцип «agile» стал мантрой цифровой эпохи. С ростом проектов, переходом от монолитных приложений к системе микросервисов, увеличением и накоплением продуктов возникают вопросы, которые требуют совершенно иного подхода. Теперь наибольший интерес вызывает находящаяся на стыке разработки и операционного управления методология DevOps.DevOps – это не просто набор техник, это философия. Разработчики, зацикленные на пользователях, должны уделять внимание поддержке и ее запросам. Сисадмины должны сообщать о проблемах продукта и вносить свой вклад в улучшение процесса работы.


Простой Python. Современный стиль программирования

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