Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

@"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];

Поделиться:
Популярные книги

Император

Эберс Георг Мориц
Проза:
историческая проза
5.00
рейтинг книги
Император

Пиччинино

Санд Жорж
Приключения:
исторические приключения
6.25
рейтинг книги
Пиччинино

Отряд

Посняков Андрей
Отряд тайных дел
Фантастика:
фэнтези
боевая фантастика
6.25
рейтинг книги
Отряд

Газлайтер. Том 31

Володин Григорий Григорьевич
31. История Телепата
Фантастика:
боевая фантастика
попаданцы
альтернативная история
фэнтези
6.25
рейтинг книги
Газлайтер. Том 31

Язык программирования Си. Издание 3-е, исправленное

Ритчи Деннис М.
Компьютеры и Интернет:
программирование
5.00
рейтинг книги
Язык программирования Си. Издание 3-е, исправленное

Собрание сочинений

Гримм Якоб и Вильгельм
Детские:
прочая детская литература
5.00
рейтинг книги
Собрание сочинений

Неучтенный элемент. Том 10

NikL
10. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 10

Барон Бранд Берс. Том 2

Limonad
2. Бранд Берс
Проза:
магический реализм
5.00
рейтинг книги
Барон Бранд Берс. Том 2

Газлайтер. Том 8

Володин Григорий Григорьевич
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Великое испытание

Imperew
2. Ютрейн
Фантастика:
фэнтези
ненаучная фантастика
рпг
5.00
рейтинг книги
Великое испытание

Барон меняет правила

Ренгач Евгений
2. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон меняет правила

Эрсус. Инферно

Павлов Вел
3. Стезя Эрсуса
Фантастика:
фэнтези
5.00
рейтинг книги
Эрсус. Инферно

Возвращение

Кораблев Родион
5. Другая сторона
Фантастика:
боевая фантастика
6.23
рейтинг книги
Возвращение

Упадок и разрушение Британской империи 1781-1997

Брендон Пирс
Научно-образовательная:
история
4.00
рейтинг книги
Упадок и разрушение Британской империи 1781-1997