In der Tat enthält XCode jetzt die arm64-Architektur. NSInteger ist etwas ganz anderes jetzt, wie es in NSObjCRuntime.h ist zu definieren:
#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
damit umgehen Sie Ihre Code-Basis verbessern sollte. Zuallererst muss man wirklich konsequent sein. Weisen Sie NSInteger nur NSInteger und nicht Int zu. Vermeiden Sie alle Arten von:
int i = [aString integerValue] (as it returns a NSInteger)
aber
NSInteger i = [aString integerValue] (and if it's a long type then you won't have any trouble.)
Darüber hinaus ein weiteres Problem, das Sie haben könnten, wenn Sie eine Zeichenfolge von einem Wert erstellen möchten. Was Sie tun können, ist so etwas wie:
#define cL(v) (long)(v)
#define cUL(v) (unsigned long)(v)
NSLog(@"array.count: %ld", cUL(anArray.count));
array.count gibt ein unsigned int unter ARMv7 (n) und einem unsigned long unter arm64. Indem Sie immer in einen unsignierten Long werfen, werden Sie keine Warnung mehr bekommen und, was noch wichtiger ist, keinen Bug bekommen.
Diese "Logik" haben es von Apple selbst auf einigen Tech-Gespräche Videos eingeführt: https://developer.apple.com/tech-talks/videos/ (. Video "Architecting Moderne iOS Games" Spielen Sie das Video um 10m00s)
möglich Duplikat von [Arm64-Architektur in xcode 5.1] (http://stackoverflow.com/questions/22323039/arm64-architecture-in-xcode-5-1) – nschum
Google it Buddy –