archiving report
archiving report
- Subject: archiving report
- From: "Gerriet M. Denkmann" <email@hidden>
- Date: Wed, 27 Feb 2013 00:47:35 +0700
My investigations regarding archiving on OS X:
1. NSArchiver stores all strings in Utf-8.
This is inefficient for strings which contain mainly non-european characters (e.g. Chinese or Thai) as one character will use 3 bytes (Utf-16 would use only 2).
Corollary: It cannot store strings which contain illegal Unicode chars.
2. NSKeyedArchiver seems to be ok.
But it does create unnecessary data. E.g. in the case of an array containing identical objects, like:
NSArray *a = @[ @"a", @"a", ...., @"a"];
With 1 000 000 items it creates 10,000,395 bytes - my version creates only 1 000 332 bytes
and the output is still readable by NSKeyedUnarchiver.
3, NSKeyedUnarchiver has several bugs.
The string $null is converted to nil.
Very harmful if this string is part of a collection (like array, set or dictionary).
If the key in: encodeXXX:forKey: starts with an "$" NSKeyedArchiver correctly mangles this by prefixing
another "$". But NSKeyedUnarchiver does not find these mangled keys and returns nil or 0.
I have not reported these bugs, as I am convinced that Apple has no interest in fixing these problems.
Gerriet.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden