swift 1주차
출처 - 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(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 문법에서 자주 사용 |