본문 바로가기
Programming/iOS

TIL 2021.07.01

by IT learning 2021. 7. 1.
728x90

에셋 카탈로그 타입

폴더 타입 확장자 설명
App Icon Type .appiconset 애플리케이션의 아이콘
Catalog Type .xcassets 에셋 카탈로그의 최상위 폴더
Image Set Type .imageset 객체들이 사용하는 이미지
Data Set Type .dataset 애플리케이션에서 사용되는 데이터 파일
Launch Image Type .launchimage 애플리케이션의 실행화면 이미지

앱 시닝과 앱 슬라이싱

 

앱 시닝(app thining)

앱 시닝 이란 애플리케이션이 디바이스에 설치될 때 앱 스토어와 운영체제가 그 디바이스의 특성에 맞게 설치하도록 하는 설치 최적화 기술을 의미한다. 이를 통해 애플리케이션의 설치용량을 최소화하고 다운로드의 속도를 향상시킬 수 있다.

 

앱 시닝의 기술 구성요소는 슬라이싱(slicing), 비트코드(bitcode), 주문형 리소스(on-demend resource)가 있다.

 

슬라이싱(slicing)

슬라이싱은 애플리케이션이 지원하는 다양한 디바이스에 대한 여러 조각의 애플리케이션 번들(app bundle)을 생성하고 디바이스에 알맞은 조각을 전달하는 기술이다. 개발자가 애플리케이션의 전체 버전을 iTunes Connect에 업로드하게 되면, 앱스토어에서는 각 디바이스 특성에 다양한 버전의 조각들이 생성된다. 사용자가 애플리케이션을 설치할 때 전체 버전이 아닌 슬라이싱(slicing)된 조각들 중 사용자 각각의 디바이스의 가장 적합한 조각이 다운로드 되어 설치된다. 에셋 카탈로그에서 관리하는 이미지들은 자동으로 적용이 된다.

 

* iTunes Connect란 개발자가 앱 스토어에 판매할 애플리케이션을 제출하고 관리할 수 있도록 도와주는 웹 기반 도구이다.

 

앱 슬라이싱(App slicing)의 전개도

 

비트코드(bitcode)

비트코드는 기계언어로 번역되기 이전단계의 중간 표현(Intermediate Representation)을 말한다. App Store Connect에 업로드된 앱은 비트코드를 포함하고 이 앱은 컴파일되어 앱 스토어에 연결된다(Link). 비트코드를 포함하면 애플은 앱의 새 버전을 앱 스토어에 제출할 필요없이 향후 앱 바이너리를 다시 최적화 할 수 있다.  비트코드를 사용하면, 최신 컴파일러용으로 자동으로 앱을 컴파일하고, 특정 아키텍쳐(예를 들자면 iPhone 6 or iPad Air 2 와 같은 64Bit 프로세서의 경우 arm64)에 맞게 최적화 한다는 것이다.

 

iOS 앱의 경우에는 비트 코드가 기본값이지만 선택사항이고, 나머지 watchOS와 tvOS 앱의 경우 비트코드가 반드시 필요하다. 비트 코드를 제공하는 경우 App Bundle의 모든 앱 및 프레임 워크에 비트코드가 포함되어야 한다.

 

Bitcode는 다른 아키텍쳐에 대한 최적화를 '제거'하여 다운로드는 더 작게 만들고, 관련 최적화만 다운로드하여 App thining 기술과 함께 사용한다.

 

앱스토어에서 앱을 최적화 하려면 비트코드가 꼭 필요하다는 의미이다. 

 

비트코드가 위에 말했듯 크기도 적게 하고, 최적화에 도움도 되고 그러는데 가장 중요한 건 바로 LLVM(Low Level Virtual Machine)이다. 프로그래머는 사람이 읽을 수 있는 프로그래밍 언어로 코드를 작성한다. 하지만 기계는 이 언어를 이해를 하지 못한다. 이때 컴파일러가 기계가 실행할 수 있는 코드로 바꾸어준다. 

 

LLVM은 기계코드(Low Level)로 내 코드를 컴파일 하는데 사용되는 라이브러리이다.

 

비트코드와 같은 "중간" 언어는 일련의 지침이 주어지면 다양한 방식으로 다시 컴파일하는데 사용할 수 있는 앱의 추상 인코딩이다.

 

근데 bitcode가 있다면 앱스토어 제출시 fat binary를 만들지 않고, bitcode를 업로드 한다. 

앱스토어는 bitcode를 받아가지고 각 환경 별 바이너리를 생성합니다. 그러면 나는 내 환경에 딱 맞는 바이너리를 받을 수 있는 것이다.

 

 

주문형 리소스(on-demend resource)

쉽게 말해서, 필요할 때 다운로드 받는다는 것이다. 예를 들면 사용자가 게임을 한다. 현재 레벨보다 상위 레벨은 필요하지 않으므로 갖고 있을 필요가 없다. 사용자의 레벨이 필요할 때 다운로드 받는 것이다. 또한 인앱 구매를 예를 들 수도 있다. 사용자의 선택에 따라 다운로드 받는 것이다.

주문형 리소스(on-demend Resource)의 전개도

 

 

인터페이스 빌더의 객체를 코드와 연결(IBOutlet)

 

viewController 파일에 IBOutlet으로 시작하는 코드들을 입력하고

위 사진과 같이 끌어서 적용하면 각 레이블, 이미지등등이 연결이 된다.

 

 

인터페이스 빌더의 객체를 코드와 연결(IBAction)

 

위에 배운것은 IBOutlet으로 말 그대로 아울렛을 연결하는 작업이었고, 이번에는 IBAction으로 객체에서 발생하는 액션을 코드로 연결해 사용자 동작에 상호작용 할 수 있도록 한다.

 

 

728x90

'Programming > iOS' 카테고리의 다른 글

코코아 터치 계층(Cocoa Touch Layer) + UIKit  (0) 2021.07.01
AVFoundation, Timer  (0) 2021.07.01
UIButton, UISlider, UILabel  (0) 2021.07.01
컨트롤 이벤트와 액션과의 관계  (0) 2021.07.01
Navigation Controllers  (0) 2021.05.29

댓글

IT_learning's Commit