I noticed with with the latest update to XCode (4.6), I was given a warning about a couple of lines in JSONKit.m
. Specifically, lines that set the class of an object:
dictionary->isa = _JKDictionaryClass;
These are marked as deprecated with a note that the preferred method was to use object_setClass()
:
object_setClass(dictionary, _JKDictionaryClass);
When I asked why it was preferred to simply silence the warning, the response was:
Everything works fine even if new Xcode version complains, I don't want to :
1) test each project where i use JSONKit to check if everything goes fine after object_setClass()
2) loose cpu cycles, which is the reason why i use JSONKit over NSJSONSerialization for example. My current application parses json files that weights 600K-1M
Just how much of a performance hit are we talking about here?
NOTE:
I am more interested in
dictionary->isa = _JKDictionaryClass
vs object_setClass()
than JSONKit
vs NSJSONSerialization
.
The reasoning is that function calls always have some overhead: the arguments should be pushed onto the stack (and caller-saved registers too), then the instruction pointer should be updated, then all this should be done in reverse when the function returns. It's generally more computationally expensive than simply dereferencing a pointer (which can be as simple as mov [dest] [src]
.