1. Bounds 와 Frame 의 차이점을 설명하시오.
[iOS] frame과 bounds의 차이
- frame: 상위뷰의 기준에서 뷰의 위치와 사이즈를 나타냄.
- bounds: 자신의 기준에서 뷰의 위치와 사이즈를 나타냄
2. 실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오.
- GPS, 가속도 등 디바이스의 센서 사용 불가
- 카메라, 마이크 등 디바이스의 모듈 사용 불가
- AppleWatch + CloudKit 안됨 (경험담)
- 맥 환경이 아닌 아이폰 환경에서의 메모리나 화면의 크기 등 다른 환경으로 인한 변수를 차단하지 못함.
3. 앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체를 무엇이라고 하는가?
(이걸 대체 왜 외움?? 그냥 아는대로 써봄)
1. CoreData
- Apple의 DataBase 프래임워크. SQLite 기반으로 작성되어있다.
- Data Model을 만들고, Entity를 생성하며, 애플이 만들어서 CloudKit과의 연동이 자유롭다.
2. SwiftData
- iOS 17에서 나온 Apple의 DataBase 프레임워크 2. CoreData기반으로 되어있다. 그래서 오류메세지도 잘 보면 CoreData의 오류메세지가 등장한다.
- SwiftUI의 선언형 패러다임에 맞게 설계 되어 있다.
- enum같은 커스텀 타입 저장에 자유롭다.
- Apple이 만들어서 역시 CloudKit과의 연동이 자유롭다.
3. UserDefaults
- key - value 방식의 간단한 데이터를 저장하는 방식이다.
- 싱글톤 패턴으로 구성이 되어있다.
- Info.plist에 저장이 되기에 값의 보안이 없다고 무방하다.
- 구조화된 데이터를 저장하기보다, 간단한 데이터 저장에 적합하다.
4. Realm
- 빠르다.
- 외부 라이브러리라서 다른 플랫폼에서 Realm을 사용한다.
5. SQLite
- SQL을 조금 더 Lite하게 만든것이다. CoreData와 SwiftData의 근간이다.
- C로 작성되어있어서 빠른다.
- 다양한 운영체제에서 사용된다.
4. 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가?
UIViewController
UIViewController(이하 VC)라는 이름에서 알 수 있듯 VC는 컨트롤러지, 뷰가 아니다. 흔히 뷰라고 불리는 친구는 UIView로, VC는 UIView를 컨트롤 하는 친구이다.
5. App thinning에 대해서 설명하시오.
앱스토어에서 어플을 다운 받을때 기기의 특성(해상도 등)에 맞게 설치되도록 하는 기술.
- 슬라이싱
- Asset을 넣을때 1x, 2x, 3x를 볼 수 있는데, 기기의 특성대로 하나씩 사진을 나눠 갖는거라고 보면 된다.
- 비트코드
- 컴파일된 프로그램의 중간표현이다.
- 비트코드를 가진 앱을 앱스토어 커넥트에 업로드 하면 앱스토어에서 컴파일이 된다.
- 아이폰의 아키텍쳐의 변화 (32bit -> 64bit 칩셋으로의 변화, Arm 아키텍쳐 -> ???아키텍쳐 등)으로 변경 되더라도 앱스토어에서 알아서 컴파일을 다시 해서 유지 될 수 있다,
- 과거에는 이런거 없어서 개발자가 다시 컴파일 해서 올렸어야함.
- 주문형 리소스
- 필요할때 데이터를 다운 받는것.
- 게임 하다 보면 에셋이나 사운드팩 같은건 앱을 설치한 후에 원할때 다운받을 수 있는 게임들이 있는데 그것이 이 예시.
- 카카오톡 이모티콘 같은것들도 예시가 될 수 있을듯