Use string comparison not pointer comparison for some QSObject iVars

This is important for the identifier since the identifier is used as a key for the objectDictionary dict.
If it happens that the two strings were the same (but not the pointers), then you could potentially remove self from the objectDictionary, and overreleasing it