的確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 –