Updating Your App from 32-Bit to 64-Bit Architecture

panther222128·2021년 8월 13일
0

https://developer.apple.com/documentation/uikit/app_and_environment/updating_your_app_from_32-bit_to_64-bit_architecture

"Ensure that your app behaves as expected by adapting it to support later versions of the operating system."

앱을 운영체제의 이후 버전 지원에 적응시킴으로써 앱이 기대한 것처럼 동작하도록 합니다.

Overview

iOS 11 및 이후 버전에서 모든 앱은 64비트 아키텍처를 사용합니다. 앱이 이전 버전의 iOs를 타깃으로 한다면, 이후 버전에서도 실행될 수 있도록 업데이트해야 합니다.

Update Your App to the Latest SDK

기존 앱을 iOS 11 혹은 이후로 업데이트하는 것을 통해서 시작합니다. 우선 앱을 업데이트 함으로써 deprecate된 코드 경로를 제거할 수 있고, 모든 컴파일러 경고를 해결할 수 있으며, 특정 64비트 이슈에 대한 코드를 찾을 수 있습니다.

  1. Xcode의 최신 버전을 설치하고 프로젝트를 엽니다. Xcode는 프로젝트를 현대화하기 위해 프롬프트합니다. 현대화하는 것은 앱을 65비트 아키텍처로 컴파일할 때 중요한 새 경고 및 에러를 추가합니다.
  2. iOS 최신 버전을 지원하기 위해 프로젝트 설정을 업데이트합니다. 만약 앱이 iOS 5.1 이전 버전을 타깃으로 하고 있다면, 64비트 프로젝트를 빌드할 수 없습니다.
  3. 프로젝트에서 아키텍처 빌드 설정을 표준 아키텍처로 변경합니다.
  4. 64비트 런타임 환경을 지원할 수 있도록 앱을 업데이트합니다. 새로운 컴파일러 경고 및 에러가 이 과정에서 도움을 주는 가이드가 될 것입니다.
  5. 실제 64비트 하드웨어에서 앱을 테스트합니다. 시뮬레이터 앱에 의존하지 않아야 합니다. 개발 중간에는 유용할 수 있을지라도 function-calling 컨벤션과 같은 몇 가지 변경사항은 앱이 기기에서 실행될 때에만 시각화되어 나타납니다.
  6. Instruments를 사용해서 앱의 메모리 성능을 튜닝합니다.

Audit Your Code

적합한 포인터 사용에 대해 코드를 리뷰하는 것은 중요합니다. 포인터 크기에 대한 가정들은 에러를 갖는 동작을 보일 수 있고 심지어 충돌이 발생할 수도 있습니다. 아래에 설명하고 있는 영역에 신경써야 합니다.

  • Updating Data Structures. 구조에서 타입 크기 및 정렬에 대한 가정을 제거해야 하며, 명시적인 데이터 타입을 사용해야 합니다.
  • Auditing Pointer Usage. 적합한 캐스팅 동작을 고수해야 하고, 메모리 할당에 대한 메소드를 리뷰해야 합니다.
  • Managing Functions and Function Pointers. 세이프티를 위해 함수 프로토타입을 사용해야 하며, variable-length argument 리스트를 갖는 함수의 호출을 리뷰해야 합니다.

해결된 포인터 사용과 함께 앱은 안정적이어야 하며, 성능에 신경쓸 수 있어야 하고 아래 내용에 따라 최적화시켜야 합니다.

  • Optimizing Memory Performance. 65비트 런타임 컨텍스트에서 메모리 사용을 측정하는 성능 테스트를 설계합니다.
  • Verifying Mathematical Calculations. 정확한 결과를 보장하기 위해 수학 연산에서 서명된 값을 검증해야 하며, 비트 마스크 동작의 사용을 리뷰해야 합니다.

Topics


Memory and Pointer Access

Updating Data Structures

앱의 데이터 디자인을 리뷰하고 64비트 아키텍처를 따르도록 업데이트합니다.

https://developer.apple.com/documentation/uikit/app_and_environment/updating_your_app_from_32-bit_to_64-bit_architecture/updating_data_structures
https://velog.io/@panther222128/Updating-Data-Structures

Auditing Pointer Usage

코드에 있는 포인터가 64비트 런타임에서 세이프하도록 보장합니다.

https://developer.apple.com/documentation/uikit/app_and_environment/updating_your_app_from_32-bit_to_64-bit_architecture/auditing_pointer_usage
https://velog.io/@panther222128/Auditing-Pointer-Usage

Managing Functions and Function Pointers

코드가 정확하게 함수, 함수 포인터, Objective-C 메시지를 처리할 수 있도록 보장합니다.

https://developer.apple.com/documentation/uikit/app_and_environment/updating_your_app_from_32-bit_to_64-bit_architecture/managing_functions_and_function_pointers
https://velog.io/@panther222128/Managing-Functions-and-Function-Pointers


Performance and Accuracy

Optimizing Memory Performance

Verifying Mathematical Calculations


0개의 댓글