Можете объяснить, что такое NSHashTable и как она используется?

NSHashTable — это коллекция в iOS (Objective-C/Swift), похожая на NSMutableSet, но с более гибкой политикой хранения объектов.

Короткий ответ

Что ответить на собеседовании

NSHashTable — это коллекция в iOS (Objective-C/Swift), похожая на NSMutableSet, но с более гибкой политикой хранения объектов. В отличие от обычных множеств, NSHashTable может хранить объекты с разными вариантами владения: сильными, слабыми или без удержания (weak, strong, или без удержания).

Подробный разбор

Ответ с пояснениями

NSHashTable — это коллекция в iOS (Objective-C/Swift), похожая на NSMutableSet, но с более гибкой политикой хранения объектов. В отличие от обычных множеств, NSHashTable может хранить объекты с разными вариантами владения: сильными, слабыми или без удержания (weak, strong, или без удержания).

Это полезно, когда нужно избежать циклических ссылок или хранить объекты без увеличения счётчика ссылок, например, для делегатов или наблюдателей.

Пример использования NSHashTable с слабыми ссылками:

NSHashTable *weakTable = [NSHashTable weakObjectsHashTable];

NSObject *obj = [[NSObject alloc] init];
[weakTable addObject:obj];

// obj будет автоматически удалён из таблицы, когда на него не останется сильных ссылок

Таким образом, NSHashTable помогает управлять памятью и ссылками в коллекциях, где обычный NSMutableSet не подходит.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее