Ответ 1
Вы должны сказать больше о том, почему вы заботитесь о размере словаря в байтах, потому что ответ может быть различным в зависимости.
В общем, "размер" следа NSDictionary в памяти - это не то, что вы можете видеть или заботиться. Он абстрагирует свой механизм хранения от программиста и использует некоторую форму накладных расходов за пределами фактических данных, которые он хранит.
Вы можете, однако, сериализовать словарь в NSData. Если содержание словаря является только "примитивным" типом, таким как NSNumber, NSString, NSArray, NSData, NSDictionary, вы можете использовать класс NSPropertyListSerialization, чтобы превратить его в список свойств двоичного файла, который будет содержать наиболее компактное представление байтов его содержимого что вы можете получить:
NSDictionary * myDictionary = /* ... */;
NSData * data = [NSPropertyListSerialization dataFromPropertyList:myDictionary
format:NSPropertyListBinaryFormat_v1_0 errorDescription:NULL];
NSLog(@"size: %d", [data length]);
Если он содержит другие пользовательские объекты, вы можете использовать NSKeyedArchiver для архивирования его в NSData, но это будет значительно больше и потребует сотрудничества с вашими пользовательскими классами.