개발자에게 필요한 역량 3가지는 무엇인가?
1. 개발 역량
2. 소통 능력
3. 기타(troubel shooting에 대한 유연한 대처 혹은 열정..?)
플랫폼이란 무엇인가?
-> 어떠한 서비스를 제공하는 단체 혹은 기업 ( ex. Youtube, Netflix)
플랫폼의 특성을 고려해볼 때, iOS는 어떻게 적용되나요?
-> 이 질문
공식문서(개발문서 및 HIG)를 봐야하는 이유는 무엇인가요?
-> 어떠한 기능 및 소프트웨어에 대한 업데이트나 잘 알려지지 않은 부분을 개발해야할 때 혼자서 해결해나가기 위해
-> 어디까지나 구글링에 100% 의존할 수는 없기 때문에
우선 앞으로 한동안 보게 될 Xcode의 영역부터 간단히 조사해봤다.
Xcode를 실행하고 project이름을 "RC_1_week"로 설정하고 project를 만들면 다음과 같은 화면이 뜬다.
Tool bar - 현재까지 만든 프로젝트를 빌드하거나 simulator 설정 혹은 component를 추가할 수 있는 버튼이 있다.
Navigator area - Navigator 상단의 Navigator bar를 이용해 각종 navigator로 이동할 수 있다. 주로 쓰는 navigator는 프로젝트 navigator 같은데 아래와 같은 방법으로 접근을 한다.
Editor area - 코드, 인터페이스 파일, 프로퍼티 리스트, 프로젝트 세팅 등을 포함한 프로젝트를 설정 혹은 편집하는데 있어 필요한 영역이다. ediotr area 밑에 보통 Debug area가 있는데, 위 사진에는 Debug area는 안나와있다.
Utilities area - 각종 inspector를 볼 수 있는 영역인데, 파일들의 Identity and Type(class의 이름 등)을 편집할 수 있고 Text setting 과 같은 말그대로 '실용적, 유용적' 인 측면에서의 접근이 가능한 영역이다.
-> Information Property List Files 로 실행 패키지에 관한 필수 설정 정보가 포함된 구조화된 텍스트 파일
-> 쉽게 말하자면 아이폰 애플리케이션의 기본적인 정보가 담긴 설정파일
-> XML파일의 형태(EXtensible Markup Language 파일: 데이터의 이동, 구조 및 저장을 설명하는 것을 제외하고는 아무것도하지 않는 일반 텍스트 파일)
현재 프로젝트 info.plist 파일(TARGETS - RC_1_week) 에 쓰여져있는 속성들 + 구글링으로 인한 중요 속성
Accessibility Bundle Name - 텍스트 음성 변환 작업에서 어플 이름을 대체
Application requires iPhone environment - 앱이 iOS에서 실행되어야 하는지 여부를 나타내는 Boolean 값
Application Scene Manifest - 앱의 씬 기반 Lifecycle 지원에 대한 정보
Application supports indirect input events - 앱이 일반적으로 간접 입력 메커니즘을 지원함을 나타내는 boolean 값
Application uses Wi-Fi - 앱이 Wi-Fi 연결이 필요한지 여부를 나타내는 Boolean 값
Bundle creator OS Type code - 4글자로 이루어진 번들 식별 코드(번들: executable code와 해당 코드에서 사용하는 리소스를 보유하는 표준화된 계층 구조를 가진 디렉토리)
Bundle display name - 사용자가 볼 수 있는 번들 이름. Siri에서 사용하며 iOS 화면에 표시
Bundle identifier - 번들의 고유 식별자
Bundle name - 사용자가 볼 수 있는 번들의 짧은 형식의 이름(최대 15자)
Bundle OS Type code - 4글자로 이루어진 번들 타입 - 앱: APPL / 프레임워크: FMWK / 번들: BNDL
Bundle version - 번들의 신판을 식별하는 빌드 버젼
Bundle version string (short) - 번들의 릴리스 또는 버전 번호 - 시스템 전체에서 번들 버전을 식별하는데 사용
Executable file - 번들의 실행 파일 이름
Help Book directory name - 번들의 도움말 파일이 들어 있는 폴더의 이름
Help file - 번들의 HTML 도움말 파일 이름
Icon file - 번들 아이콘이 들어 있는 파일
Icon files - 번들 아이콘 이미지 파일 이름
Icon Name - 앱 아이콘을 나타내는 에셋의 이름
InfoDictionary version - info.plist 구조의 현재 버젼
initial interface orientation - 앱 사용자 인터페이스의 초기 방향
Launch screen interface file base name - 앱의 시작 이미지를 생성할 스토리보드의 파일 이름
Localization native development region - 언어 ID로서 번들의 디폴트 언어 및 지역
Localizations -앱에서 수동으로 처리한 위치화
Localized resources can be mixed - 번들이 프레임워크에서 지역화된 문자열 검색을 지원하는지 여부를 나타내는 boolean 값
Main nib file base name - 앱의 메인 사용자 인터페이스 파일 이름
Main storyboard file base name - 앱의 스토리보드 리소스 파일 이름
Required device capabilities - 앱에서 실행하는 데 필요한 장치 관련 기능
Status bar style - 앱이 시작될 때 상태 표시줄의 스타일
Supported interface orientations (iPhone) - 아이폰 앱에서 지원하는 인터페이스 방향
URL types - 앱에서 지원하는 URL schemes(http, ft 등)목록
Xcode Target
A target specifies a product to build and contains the instructions for building the product from a set of files in a project or workspace. A target defines a single product; it organizes the inputs into the build system—the source files and instructions for processing those source files—required to build that product. Projects can contain one or more targets, each of which produces one product.
-> 애플의 공식문서에는 위와같이 나와있는데 해석 + 구글링으로 인한 최종적인 결과는.. "Xcode에서 Build하여 얻게되는 최종적인 결과물"
-> 이 결과물의 형태는 최종적으로 APP, Framework, Unit Test 번들 등 다양한 형태가 될수도 있음
Projects can contain one or more targets, each of which produces one product.
-> 아래사진처럼 프로젝트는 하나 혹은 더 많은 target을 포함할 수 있으며, 각 target은 하나의 제품을 생성함
-> Target은 해당 product를 빌드하는데 필요한 instructions을 또한 포함하고 있음
You start by declaring an exported or imported type in your app’s Info.plist file. For each type, identify and select a unique identifier. Create a new identifier for exported types, or use an existing identifier for imported types. Then define conformance to system-declared types and list any associated file extensions or MIME types.
Xcode Project
An Xcode project is a repository for all the files, resources, and information required to build one or more software products. A project contains all the elements used to build your products and maintains the relationships between those elements. It contains one or more targets, which specify how to build products. A project defines default build settings for all the targets in the project (each target can also specify its own build settings, which override the project build settings).
잘못된 Build Setting으로 인해 문제가 발생했다고 생각되면 좌측 상단에 "Customized" 버튼을 눌러 현재 "기본값이 아닌" 값을 쓰고 있는 Build Setting 값들을 확인
Target Build Setting 보다는 Project Build Setting을 이용하기
좌측상단 "Levels"라는 버튼을 눌러 들어가면, 현재 적용되어 있는 Build Settin이 어느 차원에서 정의되었지 확인할 수 있음
결론: Build Setting 값은 너무나도 많고, 각각의 값들의 의미를 파악하기도 어려우니 불필요한 Build Setting은 최소화하자