iOS 64-bit Transition

Apple recently announced that it will not allow new apps that don’t have 64-bit support to the App Store starting February 1, 2015. Also, you get a warning about this when you submit a new app. After February, this warning will be replaced with an error.

Screenshot_14_11_14_10_37

With the release of Apple A7 processor on iPhone 5S, the transition from 32-bit to 64-bit addressing has begun for mobile devices. Apple’s 64-bit processors (A7 on iPhone 5S and A8 on iPhone 6-6+) still support 32-bit instruction set. This means they can run apps that aren’t compiled for 64-bit architecture. However, when there are 32-bit compiled apps on a 64-bit iOS device, operating system loads 32-bit system frameworks along with 64-bit versions. It affects performance and leads to memory consumption. Therefore, Apple hinted that future iOS devices might not have 32-bit support with this latest restriction. You can see iOS 64-bit devices here: http://en.wikipedia.org/wiki/List_of_iOS_devices .

64bit2

64-bit architecture provides larger address space and significant performance gain. You can easily compile your app for iOS 64-bit on XCode. Just change your “Architectures” build setting to “Standard Architectures (armv7, armv64)”. But there are some issues you need to check. For example, pointer and int types are both 32-bit on an 32-bit architecture. But on 64-bit system, an int isn’t sized large enough to hold a pointer. Also on Cocoa Touch, NSInteger is used to describe an integer. Most probably you were casting NSInteger results of Cocoa APIs to int for quick-typing. That needs to change, because NSInteger changes its size on 64-bit.

We have been already compiling and testing Smartface iOS apps on 64-bit for a while. Again with another case of fragmentation, there’s nothing for you to worry if you are using Smartface.