的确XCode现在包含arm64架构。 NSInteger的是完全不同的东西,现在因为它是在NSObjCRuntime.h定义:
#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
来对付它,你应该提高你的代码库。首先,你必须真正一致。仅将NSInteger分配给NSInteger,而不分配给int。避免一切形式的:
int i = [aString integerValue] (as it returns a NSInteger)
但
NSInteger i = [aString integerValue] (and if it's a long type then you won't have any trouble.)
而且,你可能有另外一个问题是,当你想创建一个从值的字符串。 你可以做的是一样的东西:
#define cL(v) (long)(v)
#define cUL(v) (unsigned long)(v)
NSLog(@"array.count: %ld", cUL(anArray.count));
array.count返回下的ARMv7(S)和下arm64一个unsigned long unsigned int类型。通过总是投入一个无符号的长,你不会再面临任何警告,更重要的是,不会有任何错误。
这种“逻辑”已经介绍了苹果本身的一些高科技会谈影片有: https://developer.apple.com/tech-talks/videos/(视频“架构现代的iOS游戏”玩弄10m00s视频)
[ARM64体系结构在xcode 5.1中可能的重复](http://stackoverflow.com/questions/22323039/arm64-architecture-in-xcode-5-1) – nschum
Google it buddy –