antonio's blog

antonio's blog


Блог о всяком разном, связанном с разработкой ПО. Пишу редко, когда есть время и желание.

antonio
Author

Share


Tags


Класс NSCountedSet

antonioantonio

Класс NSCountedSet, также как и класс NSSet предназначен для создания неупорядоченного набора объектов, но в отличие от него позволяет создавать изменяемые (mutable), не уникальные наборы. NSCountedSet является подклассом NSSet

Класс принимает следующие протоколы (наследование от NSSet):

Класс, в дополнение к унаследованным от NSSet, реализует методы:

А также переопределяет следующие методы:

Методы инициализации

-initWithArray: — инициализирует созданный набор объектами из массива. Метод принимает один аргумент — массив добавляемых в набор объектов. Если в массиве объект встречается более одного раза, то в набор он будет добавлен только один раз. Каждый объект из массива, добавляемый в набор, захватывается с помощью посылки сообщения retain. Возвращает инициализированный объект класса NSCountedSet

NSArray *myArray = [NSArray arrayWithObjects: @"one", @"two", @"three", nil];  
NSSet *mySet = [[NSCountedSet alloc] initWithArray: myArray];  
NSLog(@"%@", mySet);

[mySet release];

-initWithSet: — инициализирует созданный набор объектами из существующего набора. Метод принимает один аргумент — существующий набор. Каждый объект из существующего набора, добавляемый в новый набор, захватывается с помощью посылки сообщения retain. Возвращает инициализированный объект класса NSCountedSet

NSSet *mySet1 = [[NSCountedSet alloc] initWithObjects: @"one", @"two", @"three", nil];  
NSLog(@"%@", mySet1);  
NSSet *mySet2 =  [[NSCountedSet alloc] initWithSet: mySet1];  
[mySet1 release];
NSLog(@"%@", mySet2);  
[mySet2 release];

-initWithCapacity: — инициализирует созданный набор с указанной начальной ёмкостью. Возвращает инициализированный объект класса NSCountedSet

Добавление и удаление объектов

-addObject: — добавляет новый объект к текущему набору. Метод принимает один аргумент - добавляемый объект. Если объект уже присутствует в наборе, то добавление не произойдет. Добавляемый объект захватывается с помощью посылки сообщения retain.

NSMutableSet *mySet1 = [NSCountedSet setWithObjects: @"one", @"two", @"three", @"one", nil];  
NSLog(@"%@", mySet1);

[mySet1 addObject:@"four"];
NSLog(@"%@", mySet1);  

-removeObject: - удаляет объект из набора. Метод принимает один аргумент - удаляемый объект

NSMutableSet *mySet1 = [NSCountedSet setWithObjects: @"one", @"one", @"two", @"three", nil];  
NSLog(@"%@", mySet1);

[mySet1 removeObject:@"one"];
NSLog(@"%@", mySet1);  

Подсчет объектов

-countForObject: - возвращает количество вхождений указанного объекта в набор.

NSMutableSet *mySet1 = [NSSet setWithObjects: @"one", @"two", @"three", @"one" nil];  
NSLog(@"%@", mySet1);

NSUInteger = count = [mySet1 countForObject:@"one"];  
NSLog(@"%ld", count); // 2  

Доступ к элементам набора

-objectEnumerator: - возвращает объект-энумератор используемый для перебора всех элементов набора

NSSet *mySet1 = [NSSet setWithObjects: @"one", @"two", @"three", nil];  
NSEnumerator *enumerator = [mySet objectEnumerator];  
id obj = nil;  
while ((obj = [enumerator nextObject])) {  
   //....
}
antonio
Author

antonio

Comments