/ / Czy cofnięcie archiwizacji NSDictionary przy użyciu NSKeyedUnarchiver przydziela wszystkie zawarte w nim obiekty? - ios, object-c, nsdictionary, nsdata, nskeyedarchiver

Czy cofnięcie archiwizacji NSDictionary przy użyciu NSKeyedUnarchiver przydziela wszystkie zawarte w nim obiekty? - ios, target-c, nsdictionary, nsdata, nskeyedarchiver

W mojej aplikacji dla każdej gry zapisanej na urządzeniu przechowuję obiekt gry w NSDictionary wraz z innymi metadanymi, które są archiwizowane za pomocą NSKeyedArchiver.

Staram się unikać przydzielania / inicjowania gryobiekt za każdym razem, gdy chcę uzyskać szczyt danych gry, ponieważ obiekty gry mogą stać się dość duże. Dlatego używam metadanych, aby uzyskać podstawowe informacje na ich temat, aby budować menu itp.

Mam 2 pytania Czy każdy obiekt w NSDictionary jest przydzielany, gdy nie jest archiwizowany? Jeśli tak, to czy archiwizacja obiektu gry jako NSData, a następnie archiwizacja go ponownie w NSDictionary jest bardziej wydajna? Zasadniczo archiwum w archiwum.

Odpowiedzi:

2 dla odpowiedzi № 1

Tak, cały słownik nie jest archiwizowany ww tym samym czasie. Możesz utworzyć opakowanie i / lub zapisać każdy stan gry jako 2 pliki (jeden dla metadanych i jeden dla pełnego stanu), prawdopodobnie z każdą grą we własnym folderze.

Umieszczanie zarchiwizowanych danych w słowniku, a następniezarchiwizowanie słownika nie rozwiązuje początkowego problemu i potrwa dłużej. Rozwiązaniem jest oddzielenie 2 części danych, aby można je było oddzielnie rozpakować.