NSArray и NSMutableArray в Objective-C
Массив — это структура данных, которая позволяет хранить данные в непрерывной памяти. Они могут использоваться для хранения примитивных типов данных, таких как int, float, double, char и т. д. любого конкретного типа, или могут хранить производные типы данных, такие как структуры, указатели и т. д. Его индексация начинается с 0, т. е. первый элемент хранится в индекс 0, второй элемент с индексом 1 и так далее. Он может быть изменяемым и неизменяемым.
Изменчивость означает изменчивость, т.е. если что-то изменчиво, мы можем это изменить. В массиве или строке изменчивость означает, что мы можем изменить элемент массива или символ строки во время выполнения. Но если массив или строка неизменяемы, мы не можем изменить элемент массива или символ строки во время выполнения.
NSArray
В языке программирования Objective-C NSArray используется вместо массива для хранения значений данных в непрерывной памяти. Индексация в NS Array остается такой же, как и в массиве. NSArray в Objective C хранит неизменяемый массив объектов. Поскольку он неизменяем, мы не можем изменять элементы массива во время выполнения, а только заменяем существующий массив. Он управляет упорядоченными коллекциями объектов. Он используется для создания статической коллекции объектов, т.е. статического массива.
Некоторые методы массива NS
- alloc/initWithObjects: используется для инициализации массива с объектами.
- objectAtIndex: возвращает объект по указанному индексу.
- count: возвращает количество объектов в массиве.
- containsObject: возвращает true, если данный объект находится в массиве, в противном случае возвращает false.
- indexOfObject: возвращает индекс, по которому объект хранится в массиве.
Пример:
В приведенном ниже примере мы инициализируем именованный массив NSArray тремя строковыми объектами. Затем мы применяем описанные выше методы для поиска объектов по индексу, подсчета количества объектов, проверки наличия объекта и т. д.
ObjectiveC
// Objective-C program to demonstrate NSArray #import <Foundation/Foundation.h> int main() { NSAutoreleasePool * pool = [[ NSAutoreleasePool alloc] init]; // NSArray initialisation NSArray *array = [[ NSArray alloc] initWithObjects: @"geeks" , @"for" , @"gfg" , nil ]; // Object at index NSLog ( @"The object in array at Index 1 is : %@
" , [array objectAtIndex:1]); // Count NSLog ( @"Total number of objects in the array is : %d
" , [array count]); // containsObject BOOL containsObject = [array containsObject: @"gfg" ]; if (containsObject == true ) NSLog ( @"Yes
" ); else NSLog ( @"false
" ); // Index of the object int index = [array indexOfObject: @"gfg" ]; NSLog ( @"gfg is at index : %d
" , index); [pool drain]; return 0; } |
Выход
The object in array at Index 1 is : for Total number of objects in the array is : 3 Yes gfg is at index : 2
NSMutable Массив
В языке программирования Objective-C NSMutable Array также используется вместо массива или NSArray для хранения значений данных в непрерывной памяти. Индексация в NSMutable Array остается такой же, как у массива или NSArray. Разница между NSArray и NSMutable Array в Objective C заключается в изменчивости NSMutable Array. Он хранит изменяемый массив объектов. Поскольку он изменчив, мы можем изменять элементы массива во время выполнения. Он также управляет упорядоченными коллекциями объектов. NSMutable Array создает динамическую коллекцию объектов, т.е. динамические массивы.
Некоторые методы NS Mutable Array
Поскольку массив NSMutable унаследован от NSArray, все методы экземпляра NSArray могут использоваться в массиве NSMutable. В дополнение к этим методам мы также используем нижеперечисленные методы.
- addObject: используется для вставки объекта в конец массива.
- insertObject: atIndex: используется для вставки объекта по заданному индексу.
- removeObjectAtIndex: используется для удаления объекта из массива по указанному индексу.
- removeLastObject: используется для удаления последнего объекта из массива.
- replaceObjectAtIndex: withObject: заменяет объект с указанным индексом данным объектом.
- removeAllObjects: удаляет все элементы массива, делая его пустым.
Пример:
В приведенном ниже примере мы инициализируем пустой изменяемый массив NS с именем mutableArray. Затем мы применяем описанные выше методы для добавления объектов, печати, добавления объектов по нужному индексу, удаления объектов из заданного индекса, удаления последнего объекта, замены и т.д.
ObjectiveC
// Objective-C program to demonstrate NSMutableArray #import <Foundation/Foundation.h> int main() { NSAutoreleasePool * pool = [[ NSAutoreleasePool alloc] init]; // NSMutableArray Initialisation NSMutableArray *mutableArray = [[ NSMutableArray alloc]init]; // Adding objects [mutableArray addObject: @"geeks" ]; [mutableArray addObject: @"for" ]; [mutableArray addObject: @"write" ]; [mutableArray addObject: @"intern" ]; // Print array NSLog ( @"mutableArray : %@
" ,mutableArray); // Inserting object at index [mutableArray insertObject: @"gfgwebsite" atIndex:1]; // Print array NSLog ( @"mutableArray after insertion : %@
" , mutableArray); // Remove object at index [mutableArray removeObjectAtIndex:1]; // Print array NSLog ( @"mutableArray after removing : %@
" , mutableArray); // Remove last object [mutableArray removeLastObject]; // Print array NSLog ( @"mutableArray after removing last object : %@
" , mutableArray); // Replace object at index [mutableArray replaceObjectAtIndex:0 withObject: @"swift" ]; // Print array NSLog ( @"mutableArray after replacing 0th index object : %@
" , mutableArray); NSLog ( @"No of objects before removing all objects : %d
" , [mutableArray count]); // Removing all objects [mutableArray removeAllObjects]; NSLog ( @"No of objects before removing all objects : %d
" , [mutableArray count]); [pool drain]; return 0; } |
Выход
mutableArray : (geeks, for, write, intern) mutableArray after insertion : (geeks, gfgwebsite, for, write, intern) mutableArray after removing : (geeks, for, write, intern) mutableArray after removing last object : (geeks, for, write) mutableArray after replacing 0th index object : (swift, for, write) No of ojects before removing all objects : 3 No of ojects before removing all objects : 0