Они должны быть напрямую совместимы на 64-битной машине (или если вы строите с NS_BUILD_32_LIKE_64
):
NSInteger i = *score;
Документация указывает, что определение NSInteger
выглядит следующим образом:
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
Так что на 32-битной машине у вас могут возникнуть проблемы с усечением. На моей машине вот это утверждение:
NSLog(@"%d %d", sizeof(int64_t), sizeof(NSInteger));
дает этот вывод:
2010-03-19 12:30:18.161 app[30675:a0f] 8 8