본문 바로가기

모바일/스위프트

[Swift] Swift란?

앱이란?

앱(App)은 응용 프로그램인 애플리케이션의 줄임말로, 애플에서 처음 사용

즉, 아이폰, 아이패드 등에서 동작하는 애플리케이션을 모두 앱이라고 칭함

그 후 안드로이드, 팜, 윈도우 모바일 등 모든 스마트폰에 설치되는 응용 프로그램들도 '앱' 이라고 부르고

이제는 PC에서 사용되는 응용프로그램까지 통틀어 '앱' 이라고 부름

 

아이폰 시장

전세계 시장 점유율
국내시장 점유율
미국시장 점유율
일본시장 점유율

2021년 03월 기준 전세계적으로 약 27% 의 시장 점유율을 보였고,

국내에서는 IOS가 25%가 넘는 점유율을 보였고, 일본과 미국은 60%에 육박하는 점유율을 보임

 

iOS 앱 개발을 위한 전제 조건

윈도우용 앱 개발에 Visual C++라는 도구를 사용하고 C++ 또는 C# 등의 언어를 학습해야 하듯이

아이폰 앱 개발을 위해선 'Xcode' 라는 도구를 사용하고 오브젝티브-C 나 스위프트 라는 언어를 알아야 함

과거에는 오직 오브젝티브-C로만 아이폰 앱 개발이 가능했지만, C언어에 객체 지향 개념이 적용된 언어이다 보니 접근이 쉽지 않아 아이폰 앱 개발을 포기하는 경우가 다반사 -> 2014년 스위프트가 선을 보이게 되면서 두가지 모두를 이용하여 아이폰 앱 개발이 가능해짐

 

아이폰 앱 개발을 하기 위해선 매킨토시 컴퓨터가 필요 -> 더 정확하게는 매킨토시 컴퓨터의 운영체제인 macOS 가 필요

그 이유는 아이폰 앱을 개발하기 위한 통합 개발 환경인 Xcode가 macOS에서만 동작하기 때문

 

스위프트의 특징

- 애플의 IOS와 macOS를 위한 프로그래밍 언어

- 2014년 6월 2일 애플 세계 개발자 회의에서 처음 소개

- 기존의 애플 운영체제용 언어인 오브젝티브-C와 함께 공존할 목적으로 만들어짐

- 오브젝티브-C와 마찬가지로 LLVM으로 빌드되고 같은 런타임 공유

- 클로저, 다중 리턴 타입, 네임스페이스, 제네릭스, 타입 유추 등의 기능 확장

- 코드 내부에서 C나 오브젝티브-C 코드를 섞어 프로그래밍하거나 스크립트 언어처럼 실시간 상호작용 가능

- 언어 설명서도 함께 배포

- 2.0 ver -> 3.0 ver : 많은 C 형식의 for문이 삭제되고 ++, -- 연산자가 삭제되는 등 많은 변경으로 하위호환 불가

 

//Swift 2.0 이전
println("Hello, World!")
//Swift 2.0 이후
print("Hello, World!")
//Swift 2.2 까지
for (var i=0;i<10;i++) {
 print(i)
}
//Swift 3.0 이후
for i in 0..<10 {
 print(i)
}

 

스위프트의 장점

빠르고 강력하다

- 스위프트는 발전된 코드 분석기를 이용하여 최적화된 컴파일 수행

 

완전한 플랫폼이다

- 스위프트는 애플의 코코아 프레임워크 및 코코아 터치 프레임워크의 모든 부분에 완전하게 접근 가능토록 개발

 

현대적이다

- 스위프트는 읽고 쓰기 쉬운 문법으로 구성, 헤더 파일 제거 등 현대적 언어의 특징을 대부분 포함

 

상호반응적인 플레이그라운드

- 플레이그라운드를 사용하면 코드를 입력하자마자 바로 변수의 결과를 확인할 수 있으므로 간편하게 스위프트 문법을 읽히기 가능

 

안전을 위한 설계

- 스위프트는 버그, 충돌, 보안의 허점 등이 있는 코드를 제거하고, 타입 추론에 의한 타입 안정성을 높임

- 포인터와 같은 메모리에 직접 접근하는 방식을 완전히 차단하였고 메모리 관리를 자동화하여 안정적인 소프트웨어 개발 가능

 

오브젝티브-C 와의 상호 운용성

- 새 앱을 만들거나 앱에 새로운 기능을 구현하기 위해 기존의 오브젝티브-C 코드와 혼합하여 사용 가능

 

오픈 소스이다

- 스위프트는 Swift.org에 오픈소스로 공개되어 많은 개발자가 함께 발전시켜 나갈 수 있음

'모바일 > 스위프트' 카테고리의 다른 글

[Swift] 아웃렛 변수와 액션 함수 문법  (0) 2021.07.08
[Swift] Xcode 프로젝트 생성  (2) 2021.07.07
[Swift] 함수와 클로저  (0) 2021.07.07
[Swift] 옵셔널(Optional)  (0) 2021.07.05
[Swift] 조건문과 반복문  (0) 2021.07.05