Olive Study Room
[Swift, iOS] Swift 개요와 개발환경 본문
안드로이드 프로젝트를 끝내고 오랜만에 다시 iOS프로젝트에 대해 공부하면서
얼레벌레 남 코드 활용이 아닌 내 코드를 작성하기 위해 기초부터 다시 잡아보려고 한다.
이제는 CS에 대해 조금 공부를 한 상태이기 때문에 하나하나 이해하는데 어려움이 없을 것이라고 예상한다.
여러 자료들과 학교 수업 자료를 이용하여 공부한다.
* 학교 수업 자료 목표
- Swift 언어를 이해한다
- 애플의 개발 도구들과 친숙해진다
- 앱을 개발하기 위한 디자인 패턴을 이해하고 적용한다
- 최신 모바일 기기를 이해하고 활용한다
- iOS에서 제공하는 코어 프레임워크를 사용한다
Swift 개요
- 2014년 9월 iOS 8이 발표되며 apple이 개발한 Swift1.0이 발표
- 2015년 Swift 2 발표, 오픈소스화 발표
- 2016년 Swift 2.2, 2016년 가능 Xcode8, Swift 3이 개뱔됨
Object C란?
- 코코아 프레임워크를 사용하기 위한 C언어 기반 객체 지향 언어
- 1970년대에 도입되었고 C언어에 스몰토크 스타일의 메시지 구문을 추가한 언어.
Object C의 단점
- 오래된 언어 기반(C) - 헤더파일, 구현파일 구분
- nil 처리를 런타임을 컴파일러가 잡지 못함
- 타입 체크 약함
- 성장 한계
Swift의 강점 "안전하고(safe) 빠르고(fast) 표현성(Expressive)이 좋다 " - Apple이 말하는 Swift의 특징
- 안전
- 프로그래머가 저지를 수 있는 버그를 문법을 통해 방지한다.
- 옵셔널/gurad let(nil에 대한 처리), 오류처리, 타입 통제 등 안전한 프로그래밍을 추구한다
- 신속성
- C언어를 기반으로 한 프로그래밍 언어를 대체하려는 목적
- 실행 속도의 최적화, 더 빠른 컴파일 성능 구현
- 표현성
- 보기 좋고 현대적, 세련된 문법
- 클로저, 튜플, 제네릭
- 다중 패러다임 프로그래밍 언어
- 명령형 객체지향 프로그래밍
- 함수형 프로그래밍
- 보기 좋고 현대적, 세련된 문법
-> 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍
-> 1. 어떤 상황에서도 일정하게 같은 결괄르 도출할 수 있다.
-> 2. 값 변화를 멀리하여 함수 호출이 상호 간에 배타적으로 실행되고 병렬처리에 유리하다
-> 3. 대규모 병렬처리, 멀티코어의 환경에서 효율적인 프로그래밍이 가능하다.
-
-
- 프로토콜 지향 프로그래밍
-
-> 타입 대부분이 클래스(참조 타입)가 아닌 구조체(값타입)으로 구현되어있다.
-> 상속 불가능한 구조체로 공통 기능을 가질 수 있도록 한다.(프로토콜, 익스텐션 이용)
-> 추후 게시글로 작성 예정!
개발 환경
Swift 언어 실습 환경 - Xcode
- 플레이그라운드
- iOS, Mac OS 프로젝트
- 콘솔 기반 실행
- 온라인 swift 환경
- ARC(Automatic Reference Counting) : 자동 참조 횟수 계산 -> 추후 게시글로 작성 예정!
Xcode란?
iPhone과 MacOS용 소프트웨어를 개발하는 필수 도구 모음집
- IDE(Integrated Development Environment : 통합 개발 환경) 제공
- 통합되고 잘 정리된 개발 관련 정보 제공
- gcc컴파일러를 기본으로 사용
- LLDB를 기본 디버거로 사용하며 IDE와 잘 통합되어있음
1. 플레이그라운드
- REPL(Read-Eval-Print-Loop) : 코드를 짜면 바로 읽어서 실행
- 프로젝트 생성 불필요
- 코드 작성/변경 - 바로 결과 확인
2. 앱 프로젝트
- 선택 환경마다 실행 환경이 조금 다름
- 개발 프로젝트 내 플레이그라운드 포함 가능
3. 프로젝트 정보 - Bundle ID
- organization Identifier + product name
- 개별 앱을 식별하기 위한 정보
- 앱을 등록하거나 업데이트할 때 같은 앱으로 등록하기 위함
iOS 구성 기능
- Core OS
- OS X kernel, Power mgmt, Mach, Keychain, BSDm Certificates, Sockets, File System, Security, Bonjour
- Core Services (기능과 내부 데이터베이스)
- Foundation(앱에서 필요한 대부분의 기본적 기능), Core Location, Address Book, Net Services, Networking, Threading, File Access, Preferences, SQLite, URL Utilities
- Media
- Core Audio, JPEG/PNG, OpeAL, TIFF, Audio Mixing, PDF, Audio, Quartz(2D), Recording, Core, Video, Animation, Playback, OpenGL ES
- Cocoa Touch (사용자 터치에 의한 인터페이스 기능)
- Multi-Touch(손가락 네개까지), Notification, Core motion, Web View, View, Map kit, Hierachy, Image Picker, Localization, Camera, Controls
'Coding > iOS' 카테고리의 다른 글
[iOS] UINavigationController, ViewController Life cycle, 화면 전환 (0) | 2022.01.11 |
---|---|
[iOS] Cocoa touch(UIKit, Foundation) (0) | 2021.10.10 |
[Swift] 소수점 다루기 (0) | 2021.06.23 |
[Swift] Map VS compactMap VS flatMap (0) | 2021.06.23 |
[Swift] Control Flow (0) | 2021.06.17 |