Прежде всего, я думаю, что из приведенных выше сообщений ясно, что размер объекта задается malloc_size(myObject)
, как это было предложено Legolas, а также в справочном руководстве Mac OS :
Функция malloc_size (ptr) возвращает размер блока памяти, который поддерживает выделение, на которое указывает ptr.Размер блока памяти всегда по крайней мере настолько же велик, как выделение, которое он резервирует, и может быть больше.
Но если вам интересно узнать размер словаря, имейте в виду следующий момент:
Словарь хранит пары ключ-значение и не содержит сам объект в части значения, а просто увеличивает количество сохраняемых объектов, которые должны были быть "добавлены", и сохраняет ссылку на этот объект при себе.,Теперь сам словарь просто содержит ссылки на различные объекты (с прикрепленным ключом).Так что, если по какой-либо причине вы ищете размер объекта для всех объектов, на которые ссылается словарь, технически это не будет размер словаря.Размер словаря будет суммой размера всех ключей плюс размер всех ссылок на значения для ключей плюс размер родительского NSObject.Если вам все еще интересно узнать размер объектов, на которые ссылаются, попробуйте выполнить итерацию по массиву значений словаря:
NSArray *myArray = [myDictionary allValues];
id obj = nil;
int totalSize = 0;
for(obj in myArray)
{
totalSize += malloc_size(obj);
}
//totalSize now contains the total object size of the refered objects in the dictionary.
Ссылка