Ответ 1
OS X и iOS используют тегированные объекты указателя в 64-битном коде. В настоящее время ни один из объектов с меткой указателя не использует в 32-битном коде, хотя в принципе это не невозможно. Конкретный набор оптимизированных классов и оптимизированных значений часто изменяется. Открытый objc4/runtime/objc-internal.h с открытым кодом описывает этот набор классов, который использовался, по крайней мере, в одной версии ОС:
OBJC_TAG_NSAtom = 0,
OBJC_TAG_1 = 1,
OBJC_TAG_NSString = 2,
OBJC_TAG_NSNumber = 3,
OBJC_TAG_NSIndexPath = 4,
OBJC_TAG_NSManagedObjectID = 5,
OBJC_TAG_NSDate = 6,
OBJC_TAG_7 = 7