NSDictionary против пользовательских объектов для производительности - PullRequest
0 голосов
/ 13 декабря 2010

Я получаю pList, сгенерированный некоторыми написанными мной php, с сервера, использующего NSURLConnection.Мой Plist содержит несколько массивов на корневом уровне.Эти массивы содержат несколько NSDictionyObjects.Как только я получаю pList, я использую NSPropertyLitSerialization для сериализации данных в NSDictionary.

Теперь, когда у меня есть этот NSDictionary, я загружаю значения в созданные мной объекты со следующим кодом.

NSMutableDictionary *newDict = [[NSMutableDictionary alloc]init];

//Create object array.
for (NSString *key in dict) {
NSArray *tempArr = [dict objectForKey:key]; 
NSMutableArray *gameObjectArray = [[NSMutableArray alloc]             
                                        initWithCapacity:tempArr.count];    
for (NSDictionary *tempDict in tempArr) {
    //Build Objects and add to array

    GameObject *tempGame = [[GameObject alloc] initWithArr:tempDict];
            //initWithArr initializes the values in the object using tempDict
    [gameObjectArray addObject:tempGame];
    [tempGame release];
    }


    [newDict setObject:gameObjectArray forKey:key];
    [gameObjectArray release];
}

self.gameObjectsDict = newDict;

С этого момента я использую объекты-значения, хранящиеся в gameObjectsDict во всем приложении.Для всех видов вещей, включая рендеринг UITableViews и передачу данных в другие viewControllers / views.

Мой вопрос: стоит ли помещать все эти значения из моего pList в объекты значения?

Раньше я просто использовал NSDictionary для передачи своих значений приложению, и оно работало нормально.Я чувствовал, что будет проще писать код и лучше использовать объекты-значения, но теперь я использую объекты-значения, если мне кажется, что я трачу больше памяти.Такое ощущение, что я передаю эти тяжелые объекты, полные данных, где, как и прежде, я просто собирал значения из своего словаря, когда это необходимо.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2010

Если вы собираетесь относиться к словарям как к объектам, лучше добавить значения в пользовательский объект.Это действительно не использует столько памяти, сколько вы думаете.Кроме того, это улучшит читабельность вашего кода, что всегда является плюсом.

0 голосов
/ 13 декабря 2010

Одно из преимуществ использования пользовательских объектов - безопасность типов.Когда вы используете objectForKey во многих местах, может быть трудно вспомнить, какой тип объекта имеет какие ключи.Помните, что компилятор помнит это для вас.

...