Преобразование (u) int64_t в NSNumbers

По сути, мой вопрос заключается в следующем: я создаю NSMutableDictionary, используя в качестве ключа объекты uint64_t.

Есть ли лучший способ создать их, чем это делать?

uint64_t bob=7;

NSNumber *bobsNumber;

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
bobsNumber=[NSNumber numberWithUnsignedLong:bob];
#else
bobsNumber=[NSNumber numberWithUnsignedLongLong:bob];
#endif

Это будет работать, пока поскольку вы не включили его в двоичный файл / сокеты / объект NSData / что-то еще. Но есть ли лучший способ сделать это? Я действительно хотел бы быть уверен, что объект является 64-битным, независимо от того, на какой платформе я его запускаю.

Думаю, я мог бы просто избежать всей проблемы, всегда используя unsigned long long, но, конечно, это тратит тонны места в куче на 64-битных машинах, если я размещу эти объекты в значимых числах ....

9
задан user439407 19 September 2010 в 14:15
поделиться