1️⃣ iOS vs. Android
| iOS | Android |
---|
프로그래밍 언어 | Objective-C / Swift | Java |
테스팅 | iOS 시뮬레이터 - 안드로이드보다 훨씬 빠름 | Android 에뮬레이터 - CPU를 포함한 가상머신, 더 현실적으로 렌더링 |
상호작용 | 홈 버튼 | 홈, 뒤로가기, 멀티태스킹 버튼 |
개발 환경 | 오픈소스 기반 | 제한적 개발 환경 → swift 오픈소스 개발 |
2️⃣ Objective-C와 Swift
Objective-C
Swift 등장 이전까지 사용되었던 애플의 표준 프로그래밍 언어이다.
차이점
| Objective-C | Swift |
---|
클래스 구현 | 헤더(.h)파일, 본문(.m)파일 | .swift파일 하나 |
변수 선언 | 타입 명시 | 타입 추론 |
로그 찍기 | "%d", num | "\(num)" |
Swift
Swift는 애플의 iOS와 MacOS를 위한 프로그래밍 언어이다.
기존 애플의 운영체제용 언어인 Objective-C와 같이 사용하기 위해 만들어졌다.
- 기존 언어와 동일한 LLVM(컴파일러) 빌드, 같은 런타임 공유
- 클로저, 다중 리턴 타입, 네임스페이스, 제너릭, 타입 유추 등 추가
- 현재 애플이 오픈소스로 공유하면서 애플 플랫폼 외에 다양한 플랫폼에서 사용 가능
언어적 특성
1. Safe
- 안전한 프로그래밍 지향
- optional, guard구문, 오류처리, 강력한 타입 통제 → 안전성 구축
2. Fast
- C 기반 언어(C, C++ 및 Objective-C)와 비슷한 성능 유지
- 더해서 실행속도 최적화, 컴파일러의 빠른 성능 구현
3. Expressive
프로그래밍 패러다임
여러 가지 프로그래밍 패러다임을 차용한 다중 패러다임 프로그래밍 언어
1. 객체지향
- 명령형 프로그래밍 ❌ → 객체의 모임 ⭕️
- 유지보수가 용이
2. 함수형
3. 프로토콜 지향
- 프로토콜은 타입으로 사용 가능 → 필요한 부분만 채택해서 사용
- 값 타입 효율적 사용
- 캡슐화, 추상화, 접근 제어
3️⃣ UIKit와 SwiftUI
UIKit
UIKit 프레임워크는 iOS 및 tvOS용 앱을 빌드하는 데 필요한 핵심 개체를 제공한다.
➡️ 개체를 사용하여 콘텐츠를 화면에 표시하고 상호작용하며, 시스템과의 상호작용을 관리한다.
- 앱은 기본 동작에 대해 UIKit에 의존함
- UIKit는 특정 요구 사항에 맞게 동작을 사용자 지정할 수 있는 (커스텀하는) 다양한 방법을 제공함
SwiftUI
SwiftUI는 최소한의 코드로 더 좋은 앱을 만들 수 있게 한다.
- Swift언어 기반 프레임워크
- AppKit, UIKit 구분없이 SwiftUI 하나로 모든 플랫폼에서 사용 가능
특징
1. 선언적 구문
- 선언적 구문을 사용하므로 사용자 인터페이스의 기능을 명시하기만 하면 됨
2. 자동화
- 특정 공간에 가장 알맞은 변형을 선택하도록 하는 ViewThatFits가 포함됨
❗️참고
Objective-C | Swift 1 | Swift 2
프로토콜 지향 프로그래밍
UIKit | SwiftUI
📢 이후의 Xcode는 인프런 강의를 참고했습니다!
https://inf.run/fSpc