에셋 카탈로그 타입
폴더 타입 | 확장자 | 설명 |
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란 개발자가 앱 스토어에 판매할 애플리케이션을 제출하고 관리할 수 있도록 도와주는 웹 기반 도구이다.
비트코드(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)
쉽게 말해서, 필요할 때 다운로드 받는다는 것이다. 예를 들면 사용자가 게임을 한다. 현재 레벨보다 상위 레벨은 필요하지 않으므로 갖고 있을 필요가 없다. 사용자의 레벨이 필요할 때 다운로드 받는 것이다. 또한 인앱 구매를 예를 들 수도 있다. 사용자의 선택에 따라 다운로드 받는 것이다.
인터페이스 빌더의 객체를 코드와 연결(IBOutlet)
viewController 파일에 IBOutlet으로 시작하는 코드들을 입력하고
위 사진과 같이 끌어서 적용하면 각 레이블, 이미지등등이 연결이 된다.
인터페이스 빌더의 객체를 코드와 연결(IBAction)
위에 배운것은 IBOutlet으로 말 그대로 아울렛을 연결하는 작업이었고, 이번에는 IBAction으로 객체에서 발생하는 액션을 코드로 연결해 사용자 동작에 상호작용 할 수 있도록 한다.
'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 |
댓글