SA성아 2024. 5. 18. 16:24

출처 - https://www.kxcoding.com/course/essential-swift

 

Essential Swift

iOS 앱 개발을 가볍게 시작해 보세요. Swift를 다양한 예제, 상세한 설명과 함께 정복할 수 있습니다. 문법적 기초가 튼튼해야 원하는 기능을 자유롭게 구현할 수 있습니다.

www.kxcoding.com

아래 내용들은 KxCoding의 essential-swift강의를 보고 작성되었습니다. 

 

Hello, Swift

단축키

단축키 기능
cmd + 폰트 크기 크게
cmd - 폰트 크기 작게
cmd + / 주석
shift + return 현재 라인까지 실행
shift + cmd + L 라이브러리
cmd + R 프로젝트 run
shift + opt + cmd + L open library
cmd + 숫자 1~9 switch navigator
cmd + B Build

 

기초

Swift 문법은 대소문자를 구분한다.

주석(comments): 코드를 설명하거나 기억해야할 내용을 소스파일 안에서 메모

주석 유형 설명
// 한 줄 주석 (Single-line Comment)
/* */ 여러 줄 주석 (Multi-line Comment)
/* */ (코드 사이에 삽입) 인라인 주석 (Inline Comment)

 

세미콜론(Semicolon): 한 줄에서 두 개 이상의 문장을 작성할 때만 사용

 

용어 설명
import Framework 애플이 미리 만들어놓은 코드를 가져와서 사용하는 행위
import UIKit UIKit이라는 framework를 가져와서 playground에서 사용하는 것. UIKit은 iOS 애플리케이션의 사용자 인터페이스를 구성하는 데 필요한 요소들을 제공
Framework 특정 기능을 구현한 코드를 하나의 이름으로 포장한 것. 개발자가 보다 쉽게 해당 기능을 사용할 수 있도록 도와줌
var greeting = "Hello, playground"  //문자열 변수 선언하고 저장

 

 

값 출력

print

print(greeting)

저장되어있는 값 확인: print(확인할 값)

print: 함수, 어떤 입력을 넣으면 거기에 맞게 결과가 나옴

 

dump

dump(greeting)

dump: 더 자세하게 값 출력 

 

Swift Project

Swift 프로젝트 생성, 시뮬레이터에서 프로그램 실행

아웃렛(Outlet): 입력한 값을 코드를 가져오거나, 코드에서 속성을 바꾸고 싶을 때 연결

   - 프로퍼티(Property)

액션(Action)

  - 메소드(Method)

 

Warming up

Token

공백이나 구두점으로 분리할 수 없는 가장 기본적인 요소, 가장 작은 단위의 요소

2 ▢ + ▢ 3 ▢ ;  -> token 4개

  - Identifier

  - Keyword: 프로그래밍 언어가 특수한 기 제공하기 위해 독점해서 사용하는 단어

      if: 주어진 조건에서 참과 거짓 판단

         if(o)       i▢f(x)

  - Punctuation

  - Operators

  - Literal

  - white space(공백▢): 빈칸, 토큰을 구분하는 역할할

Expression(표현식 • 식)

하나 이상의 토큰이 모여서 하나의 값을 도출하는 코드, 하나의 값으로 표현되는 코드

  - Evaluate: 코드를 실행해서 하나의 결과를 얻는다

let x = 7 //x라는 상수에 정수 7을 저장
x //가장 단순한 표현식   ------------->   7
                         //Ecaluate
let x = 7
x + 1 //   ---------------->   8
              //Evaluate
//x, +, 1 --> token, token 3개가 모여 하나의 표현식 구성중 
// x + 1: Arithmetic Expression, 산술 표현식
X < 10 //token 3개, x의 값에 따라 참이나 거짓 ture 또는 false 도출
       // Boolean Expressions, 논리 표현식

Statement(문장, 구문)

하나 이상의 표현식이 모여서 특정한 작업을 실행하는 코드

 

Literal

의미가 변하지 않고 있는 그대로 사용되는 값

7 //코드에서 의미가 변하지 않음. 항상 7번째 숫자로 사용
let x = 7 //7: Literal, let: 상수를 선언하는 키워드, x: 상수의 이름, =: 연산자
let x = 5 + 7 // 5 • 7: Literal
let x2 = x > 7 // 7: Literal

Identifier(식별자)

이름, 다른 요소와 구별한다

let x = 7 //x: Identifier
let number = 1
let Number = 2
let _Number = 3
// 컴파일러가 구분할 수 있지만 이름을 이렇게 선언하면 안됨

let memberCount = 1
let lectureCount = 2
let fixedRate = 3
// 저장하는 값의 성격을 파악할 수 있는 이름을 사용해야함

식별자는 unique 해야함

Keyword(예약어)

언어가 제공하는 기능을 위해서 미리 예약된 단어

let x = 7 //let: 상수를 선언하는 keyword
var x = 7 //var: 변수를 선언하는 keyword

let let = 7 //사용할 수 없음, let이 keyword이기 때문 
let letnumber = 7 //가능

 

Compile, Link, Build

더보기
더보기

                                            Framework

                                                   ↓   Link

{code} ---------------------> 0101001(Binary Code) ---------------------> Executables

                  Compile                   ↑  Link

                                            Framework

---------------------------------------------------------------------------------------------------------->

                                                   Build

Compile: text로 작성한 코드를 컴퓨터가 이해할 수 있게 0과 1로 바꾸는 것 

Link: 공개되어있는 코드를 가져와 우리가 만든 코드로 연결 

Build: Compile과 Link를 묶어서 Build라고 함

Debug, Release

더보기
더보기

                                                     Debug Information                  

                                                             ↘

                                          Debug Mode     실행파일의 크기가 상대적으로 커지고, 속도가 느려짐

                                                                    디버그 정보가 있어 코드를 분석하고 문제점을 찾기 쉬움

                                                             

{code} → 0101001 → Executables  

                                                           ↘

                                    Release Mode      개발을 끝낸 후 사용자에게 배포할 때 사용

                                                                  크기가 상대적으로 작고 실행속도도 상대적으로 빠름

                                                                  디버그 정보가 없어 문제점을 찾기 상대적으로 어려움

                                                           ↗

                                                 Optimization

Compile time, Runtime

Compile time: 코드를 작성하는 시점부터 컴파일과 링크가 완료되는 시점(=Build time)

Runtime: 프로그램이 실행되고 있는 시점

 

Special Characters 

이름 설명
! (Exclamation Mark) 논리를 부정하거나 Optional에 저장되어있는 값을 추출할 때 연산자로 사용
~ (Tilde) 주로 비트연산에서 사용
` (Grave Accent / Back Tick)  
@ (At Symbol) 코드 자체에 특성을 지정하는 문법에서 주로 사용
# (Sharp / Pound / Hashtag) Swift에는 #으로 시작하는 다양한 명령어가 있음
$ (Dollar Sign) Closure에서 parameter 이름 대신 사용
% (Percent Sign) 나머지 연산에서 사용
^ (Caret) 비트연산에서 사용
& (Ampersand) 주로 메모리 주소를 얻거나 참조를 전달할 때 사용
* (Asterisk) 곱하기 연산에서 연산자로 사용
( ) (Parentheses) 함수를 호출할 때 사용하거나 계산의 순서를 지정할 때 사용
- (Minus Sign / Hyphen) 뺄셈할 때 사용
_ (Underscore) 특정 항목을 생략할 때 사용하는 와일드패턴에서 사용
= (Equal Sign) 하나를 쓰면 메모리에 값 저장, 두 개를 연달아 쓰면 값을 비교하는 비교 연산자가 됨
+ (Plus Sign) 덧셈할 때 사용
[ ] (Square Bracket) 주로 collection에 저장된 값에 접근할 때 사용
{ } (Curly Bracket / Brace) 코드 블럭의 시작과 끝을 나타냄
\ (Backslash) String interpolation, KeePass 표현식에서 사용
| (Vertical Bar / Pipe) 비트연산과 논리연산에서 연산자로 사용
; (Semicolon) 문장의 끝을 지정
: (Colon) 타입 선언 문법에서 타입의 이름과 식별자 구분
, (Comma) 항목을 열거할 때, 여러 개를 쭉 나열할 때 사용
. (Period) 메소드를 호출하거나 속성에 접근할 때 사용
< > (Angle Bracket) 값의 크기나 순서를 비교할 때 연산자로 사용
/ (Slash) 주석에서 사용
? (Question Mark) Optional 문법에서 자주 사용