iOS2014. 11. 20. 14:12


iOS7과 A7 processor로 64비트가 가능해짐.

32비트앱을 동일 디바이스에 동작시킬때 성능향상이 있다고 함. 실제로 느껴질정도는 모르겠음.


A7은 두개의 구분되는 명령어셋틀 가진다.

이전프로세서의 32비트 명령어셋과 64비트프로세서의 명령어셋을 추가고 제공한다. 두배 많은 integer와 floating-point 레지스터를 제공한다. 

64비트 앱은 성능향상을 위해 더 많은 데이터를 사용한다. 

64비트 숫자연산이나 NEON operation을 수행하는 앱에서 더 많은 성능향상이 있다.


64비트 시스템에서 포인터는 64비트이다. 기존의 32비트 정수도 이제 64비트이다. UIKit이나 Foundation같은 많은 시스템 프레임워크들은 이미 변경되었다. 변경은 64비트 앱이 32비트 앱보다 더 많은 메모리를 사용한다는 것이다. 주의 하지 않으면 더 많은 메모리를 사용하면서 앱 성능에 안좋은 영향을 미칠수 있다.


iOS는 32비트와 64비트용 시스템 프레임워크를 모두 가지고 있다.

모든앱이 로드될때 64비트 런타임이 로드된다. 32비트용은 로드하지 않는다. 따라서 시스템은 메모를 절약하면서 더 빠르게 앱을 실행한다. 빌트인앱들이 모두 64비트런타임을 지원하기 때문에 모든 앱들도 64비트 런타임을 지원하도록 빌드되어야 한다.


XCode 5.0.1부터 64비트 바이너리 생성이 가능

타겟은 iOS5.1.1이상이어야 한다.

64비트 바이너리는 iOS7.0.3이상의 64비트 지원 디바이스에서 구동된다.


기존앱의 경우 

1. iOS7로 업데이트

-  deprecate된 코드 패스들을 모두 제거 하고 modern practice를 사용해야 한다.

2. 64비트 포팅


새로운앱의 경우 

1. 타겟을 iOS7로

2. 32비트와 64비트로 앱을 빌드


Cocoa Touch앱을 64비트로 변환과정

- Pointer와 C 타입중에 32비트를 64비트로 변경


64비트 런타임으로 빌드를 하면 64비트 지원관련하여 경고가 뜰것임.


- 함수호출이 적절한 프로토타입으로 호출되고 있는지

- 64비트 값을 32비트에 대입하면서 발생하는 데이터 유실 회피

- 연산들이 64비트에서 적적하게 동작할지 

- Ensure that calculations are performed correctly in the 64-bit version of your app. <- 머 알아서 연산부분 챙기라는 말같고.

- Create data structures whose layouts are identical in the 32-bit and 64-bit versions of your app (such as when you write a data file to iCloud). <- 32비트와 64비트용 데이터구조체를 사용하라는데 먼소린지 잘 모르겠다.. 더 공부해야 할듯..


Posted by 삼스