첫 수업은 첫 수업인만큼 오리엔테이션 느낌으로 진행됐다
개발자가 가져야 할 태도 및 플랫폼의 개념 등등
사실상 라이징 캠프 수업의 핵심은 수업이 아닌 과제를 진행하는 나머지 일주일인 것 같다,,, 과제량이 정말 많다🤯
하지만 그만큼 얻어가는 것이 정말 많다고 느끼는 중이다.
첫 주차 과제는 UI 구성에 관련된 기본적인 지식들을 공부하고 이를 활용하여 원하는 화면 페이지 하나를 만드는 것이었다.
자료 조사는 여러 블로그들을 많이 참고했음!
🍎공식 애플 개발자 문서에 나온 내용:
"key-value 타입으로 번들을 설정하는 것"
"필수적인 환경 설정 정보들을 포함하는 구조화된 텍스트 파일"
Bundle: 실행 가능한 코드와 그 코드가 사용하는 자원을 포함하고 있는 디렉토리이다. info.plist, assets, string파일 등 우리가 한 프로젝트를 만들 때 필요한 모든 파일을 포함하고 있는 덩어리를 뜻 한다.
내용은 XML을 사용하고 root XML 노드는 키, 밸류(Keys & Values)로 구성된 딕셔너리 형태이다.
**XML(eXtensible Markup Language, 확장성 마크업 언어)**: HTML 같은 고정된 형식이 아닌 확장이 가능한 언어. 태그가 한정되어 있지 않고 문서의 내용에 관련 태그를 사용자가 직접 정의할 수 있다.
**Markup Language**: 태그 등을 이용해 문서나 데이터의 구조를 나타내는 언어이다. 일반적으로는 데이터를 기술하는 정도로만 사용되어 프로그래밍 언어와와는 구분시킨다.
시스템은 이 키와 밸류를 사용하여 앱과 앱의 설정을 가져오며 플러그인, 프레임워크, 앱에 Info.plist가 있어야 한다.
Xcode에서 프로젝트를 생성하면 자동으로 생성된다.
Key&설명 예시:
Key | 설명 |
---|---|
Localization native development region | 개발 지역, 언어 |
Application Scene Manifest | Scene 기반의 생명주기 관련 정보 설정 |
Enable Multiple Windows | 여러 scene을 설정할 수 있는지 체크하는 속성 |
Scene Configuration | 새 Scene을 만들 때 UIKit의 기본 설정값 |
Application Session Role | 2가지 역할(Application / External Display) |
Configuration Name | 설정 이름 |
Delegate Class Name | 대신 코드 실행해 줄 클래스 이름 |
Storyboard Name | 스토리 보드 이름 |
정말 많은 종류의 key들이 있어서,,, 나중에 개발을 배워나가며 차차 어떤 것들이 있는지 학습하는 것이 효율적일 것 같다는 생각에 깊게 공부하진 않았다. 이론만 공부하면 머리에 안남는걸 알기에!
우리가 흔히 앱에서 카메라나 마이크에 접근할 때나 블루투스 연결 및 위치 정보 접근 허용 등, 개인 정보 보호를 위해 이러한 권한 허용 메세지를 자주 맞닥뜨린다. 이런 권한 허용 메세지를 띄울 때 info.plist가 사용된다.
위에서 언급했듯이 종류가 매우 다양하다. Information Property List 옆의 + 버튼을 누르고 "Privacy -"로 시작하는 부분에 해당하는 것들이 전부 권한 허용 여부를 물어볼 수 있는 선택지들이다.
쉽게 생각해서 앱 버전이라고 생각하면 될 것 같다. ex) 버전 3.0.1
Bundle version string(short) 부분이 앱의 버전을 보여준다.
아무것도 만들지 않은 초기 상태의 info.plist에는 이 항목이 없는데 이전에 클론코딩 해본 앱을 보면 들어가 있는 걸 보니 앱을 빌드하면 자동으로 생기는 것 같다.
위와 같이 화면에 앱 버전을 나타내야 하는 경우에 해당 정보를 사용할 수 있다. 중요한 점은 infoDictionary에서 key를 통해 검색할 때 property list에 나와있는 'Bundle Version string'이 아닌 XML로 표현된 'CFBundleShortVersionString'로 검색을 해야 한다.
프로젝트의 가장 상위 항목에서 Project나 Targets에 관한 설정을 할 수 있는 곳이다.
전반적으로 다뤄야 하는 설정은 Project에서 하고 Targets은 이 설정을 상속받고 개별적인 설정을 해주면 된다. 실제 product가 되는 것은 Targets이다.
Identity
Deployment Info
Supported Intents
Frameworks, Libraries, and Embedded Content
Development Assets
Deployment Target⭐️
기본적으로 iOS Deployment Target 은 Minimuim OS 지원 버전이라고 생각하면 쉽다.
예를들어 앱을 실행 중에 앱의 평점을 메길 수 있는 SKStoreReviewController의 경우는
iOS 10.3 버전부터 지원하는 기능이다.
PROJECT iOS Deployment Target vs TARGETS iOS Deployment Target
-> TARGETS이 PROJECT를 OVERRIDE 한다.
PROJECT iOS Deployment Target 과 TARGETS iOS Deployment Target 이 다를 경우에는?
-> TARGETS iOS Deployment Target 이 Minumum 버전이 된다.
출처: https://adervise1.tistory.com/104 [검소한 블로그]
Signing
Capabilities
말 그대로 빌드 되는 방법을 설정하는 곳.
아주 중요하고 민감한 값이라 이 값들을 어떻게 설정하느냐에 따라 생산성에 큰 차이가 생길 수도 있고, 심지어는 알 수 없는 런타임 오류가 발생할 수도 있다. 따라서 값을 변경하려면 바꾸려는 이유와 맥락이 팀 전체에 잘 공유 되어야 한다.
Build Setting의 값은 너무나도 많아서 각각의 의미 파악이 어렵다. 따라서 모르는 값은 선택한 후 Xcode의 우측 패널 - Quick Help를 열어보며 바뀌었을 때 어떤 변화가 있을지 알아본 후 바꾼다.
빌드 시 수행하는 작업들 설정하는 곳.
Compile sources(빌드 할 때 컴파일 할 소스 코드 목록), Copy bundle resources(PRODUCT에 리소스 복사) 등이 있다.
출처
https://velog.io/@eunjiha/iOS-Xcode-IDE-이해하기
어플리케이션을 개발할 때는 수 많은 리소스 파일(음악, 이미지)들이 필요한데 디바이스마다 필요로 하는 크기나 비율이 달라 여러 디바이스에 같은 파일을 그대로 사용할 수 없다. 그래서 필요한 것이 Asset.
위와 같이 중간 패널의 Image Set에 iPad 등의 기기를 위해 2x 와 3x의 크기를 추가할 수 있다.
출처
https://woojin-hwang.github.io/xcode-asset/
UI 제작을 할 때 Storyboard, xib, code 세 가지 방식 중 하나를 선택해서 짤 수 있다. 각자의 장단점은 물론 존재한다.
하나의 View(화면 구성 요소들) 관리와 화면과 데이터 사이의 상호 작용을 관리하는 객체이다. 윈도우 객체로부터 전달된 이벤트를 받아 내부적으로 구현된 비즈니스 로직을 실행하고, 그 결과로 얻어진 데이터를 가공시켜 화면에 표현하는 등, 우리가 하는 대부분의 작업들의 중심에 있다.
ViewController 이외에 컨트롤러에는 여러 종류가 있는데 NavigationController, TableViewController, TabBarController, Split ViewController, CollectionView Controller, 등등 이 있다.
ViewController의 종류와 View의 관리에 대한 세부 내용
https://boidevelop.tistory.com/13
확인해보니 이번주 AutoLayout 과제할 때는 TabBarController를 사용하는 것 같다.
ViewController에는 컨트롤러 내부에 모든 객체의 대장인 RootView가 있고 View들의 구조는 루트뷰의 서브뷰, 서브뷰의 서브뷰로 계층을 이루고 있다.
ViewController에는 루트뷰가 연결되어 있고 루트부터 가장 하위의 서브뷰까지 계층 구조를 따라 참조가 이어진다. 이 때문에 뷰컨트롤러가 하위의 모든 뷰에 대한 참조를 가지고 있지 않아도 모든 뷰에 접근 가능하다!
스토리보드에서 뷰 컨트롤러 사이의 화면 전환을 위해 사용하는 객체이다. 즉, 스토리보드에서 하나의 Scene으로부터 다른 Scene으로의 전환을 보여주는 연결을 뜻한다.
Segue의 종류