iOS Study 9

Type Inference (ํ˜•์‹ ์ถ”๋ก )

Type Inference 1. Type Inference (ํ˜•์‹ ์ถ”๋ก ) - ์ƒ์ˆ˜ ํ˜น์€ ๋ณ€์ˆ˜์— ์ž๋ฃŒํ˜•์„ ๋”ฐ๋กœ ๋ช…์‹œํ•ด ์ฃผ์ง€ ์•Š๊ณ , ๊ฐ’์„ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒฝ์šฐ Compiler๊ฐ€ ํ˜•์‹(์ž๋ฃŒํ˜•)์„ ์ถ”๋ก ํ•˜์—ฌ Default ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฒฐ์ •ํ•จ let num = 1 // Int.Type let num2 = 1.0 // Double.Type let str = "Swift" // String.Type let isValid = true // Bool.Type let isValid = false // Bool.Type - ๋‹จ, ์ž๋ฃŒํ˜•์„ ์ง์ ‘ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š๊ณ , ์ดˆ๊ธฐ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” Compiler๊ฐ€ ํ˜•์‹(์ž๋ฃŒํ˜•) ์ถ”๋ก ์„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์ž๋ฃŒํ˜•์„ ์ƒ๋žต ํ•˜๋ ค๋ฉด ์ดˆ๊ธฐ๊ฐ’์„ ํ• ๋‹น ํ•ด์•ผ ํ•จ 2. Type..

Data Type With Memory

Data Type With Memory 1. Data Type - Data Type, ์ž๋ฃŒํ˜•์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์™€ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•จ - Int ์ž๋ฃŒํ˜•์˜ ๊ฒฝ์šฐ PC๊ฐ€ 32bits ์šด์˜์ฒด์ œ๋ผ๋ฉด 4Byte, 64bits ์šด์˜์ฒด์ œ๋ผ๋ฉด 8Byte๋งŒํผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ - ๋”ฐ๋ผ์„œ ๊ฐ๊ฐ ์•Œ๋งž์€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์™€ ํฌ๊ธฐ์˜ ์ž๋ฃŒํ˜•์ด ์กด์žฌ 2. Swift ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(Swift Built-in Data Type) - Integer - Floating-Point - Boolean - Character - String 3. Data ์ €์žฅ ๋‹จ์œ„ - ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋Š” 1๊ณผ 0์„ ์ €์žฅํ•˜๋Š” ๋ฐ˜๋„์ฒด - ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋‹จ์œ„ : Bit ~ YB... ..

Scope

Scope 1. Global Scope(์ „์—ญ ๋ฒ”์œ„) - "{}"์— ์†ํ•˜์ง€ ์•Š๊ณ , ๋ชจ๋“  Scope์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ Scope 2. Local Scope(์ง€์—ญ ๋ฒ”์œ„) - "{}"๋‚ด์— ์†ํ•˜๋Š” Scope์ด๋ฉฐ, ํ•ด๋‹น ๋ฒ”์œ„ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•จ 3. Scope ํŠน์ง• - ๊ฐ™์€ Scope ๋‚ด์—์„œ๋Š” ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜/์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ - ์„œ๋กœ ๋‹ค๋ฅธ Scope์—์„œ๋Š” ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜/์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์žˆ์Œ - Local Scope์—์„œ๋Š” ์ƒ์œ„ Scope์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ. ๊ฐ€๋ น, ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ „์—ญ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ - ์ƒ์œ„ Scope์—์„œ๋Š” ํ•˜์œ„ Scope์— ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ

Variables and Constants

Variables and Constants 1. Variables Syntax var variableName = initialValue // var variableName: Type = initialValue - ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ณ , ๋•Œ์— ๋”ฐ๋ผ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ - ๊ฐ ๋ณ€์ˆ˜์—๋Š” ์„ ์–ธ๋œ ์ž๋ฃŒํ˜•์˜ ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ(๊ฐ€๋ น, ์ •์ˆ˜ ์ž๋ฃŒํ˜• ๋ณ€์ˆ˜์— ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  ์ˆ˜๋Š” ์—†์Œ) 2. Constants Syntax let constantName = initialValue // let constantName: Type = initialValue - ํ•œ ๋ฒˆ ๊ฐ’์„ ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด, ์ดํ›„์— ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ๊ณต๊ฐ„ - ๋ณ€์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์ˆ˜๋„ ์„ ์–ธํ•œ ์ž๋ฃŒํ˜•๊ณผ ์ผ..

Swift Source Code Build

๋Œ€๋žต์ ์ธ Swift Source Code Build ๊ณผ์ • HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ์œ„ ๊ณผ์ •์„ ์ „์ฒด์ ์œผ๋กœ ๋ฌถ์–ด์„œ Build ๋ผ๊ณ  ํ•จ ์œ„ ๊ณผ์ •์—์„œ Link๊นŒ์ง€์˜ ๊ณผ์ •์„ Compile Time์ด๋ผ๊ณ  ๋ถ€๋ฆ„ Run(์‹คํ–‰ ํŒŒ์ผ) ์ดํ›„์— Debug Mode์™€ Release Mode๋กœ ๋‚˜๋‰จ Debug Mode๋Š” Application์„ ๊ฐœ๋ฐœ ํ•  ๋•Œ๋ฅผ ๋งํ•˜๋ฉฐ, Release Mode๋Š” App Store์— ๋ฐฐํฌํ•  ๋•Œ๋ฅผ ๋งํ•จ ์œ„ ๊ณผ์ •์—์„œ Run ์ดํ›„ ๊ณผ์ •์„ Run Time์ด๋ผ๊ณ  ๋ถ€๋ฆ„

Swift์—์„œ์˜ Call By Value vs Call By Reference

1. Call By Value Call By Value๋ž€, ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ๋กœ ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ž๋กœ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์ „๋‹ฌ๋  ๋•Œ ๋ณต์‚ฌ๋ผ์„œ ์ „๋‹ฌ๋˜๋Š” ๋ฐฉ๋ฒ• ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ณต์‚ฌ๋ผ์„œ ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„ ์›๋ณธ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ 2. Call By Reference Call By Reference๋ž€, ์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ๋กœ ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ž๋กœ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์ด ์ „๋‹ฌ๋˜๋Š” ๋ฐฉ๋ฒ• ์ฃผ์†Œ๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•จ์ˆ˜์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์›๋ณธ ๊ฐ’์ด ๋ณ€๊ฒฝ๋จ // // main.swift // CallByValueCallByReference // // Created by ์ด์˜์žฌ on 2022/03/12. // //MARK: - Framework import Foundation //MARK: - Type struct Val..

UTC Time Application(MVVM ๊ธฐ๋ฐ˜)

1. World Clock API ํ™œ์šฉ UTC Time Application(MVVM) 2. UI(Storyboard) ๊ตฌ์„ฑ 3. Application ๊ตฌ์กฐ(MVVM Architecture Pattern) 4. ์ „์ฒด ์ฝ”๋“œ ๋งํฌ ์ „์ฒด ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธ ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 5. ๋А๋‚€์  MVC ํŒจํ„ด์— ๋น„ํ•ด MVVM ํŒจํ„ด์€ ๊ฐ ๊ณ„์ธต ์‚ฌ์ด์˜ ์˜์กด์„ฑ ๋ฐฉํ–ฅ์ด ์ผ์ •ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๊ณ„์ธต๋ณ„๋กœ ๋‹ด๋‹นํ•˜๋Š” ์—ญํ• ์ด ์ง๊ด€์ ์œผ๋กœ ๋А๊ปด์ ธ์„œ ํ–ฅํ›„ ๋ฆฌํŒฉํ† ๋ง์— ์œ ์šฉํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 6. Reference https://www.youtube.com/watch?v=M58LqynqQHc

MVVM(Model-View-ViewModel) ๋””์ž์ธ ํŒจํ„ด

1. MVVM ๋””์ž์ธ ํŒจํ„ด(์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ณ ํŒจํ„ด) Model-View-ViewModel ํ˜•ํƒœ์˜ ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. 1.1. Model Model์€ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ViewModel์—๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. View(ViewController)๋Š” Model์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 1.2. View(ViewController) View๋Š” iOS์—์„œ์˜ ViewController์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. View๋Š” ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ViewModel์—๊ฒŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ViewModel์ด ์—…๋ฐ์ดํŠธ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. 1.3. ViewModel ViewModel์€ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ View๊ฐ€ ๋ณด๋‚ด์ฃผ๋ฉด ๊ทธ์— ๋งž๋Š” Business Logic์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ..

์›น ๋ธŒ๋ผ์šฐ์ €(Web Browser) Appliciation

1. WebView๋ฅผ ํ™œ์šฉํ•œ Web Browser Application ์•ผ๊ณฐ iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜ ๋‚ด์šฉ์„ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ ‘์†ํ•œ ํŽ˜์ด์ง€ url ์ฃผ์†Œ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ , ์•ฑ ์ข…๋ฃŒ ํ›„ ๋‹ค์‹œ ์‹คํ–‰์‹œ ํ•ด๋‹น url๋กœ ์ ‘์†ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž…๋‹ˆ๋‹ค. 2. UI(Storyboard) ๊ตฌ์„ฑ 2.1. Navigation Controller Navigation Cotroller๋ฅผ ์„ ํƒํ•˜๊ณ  Attributes inspector์—์„œ Show Toolbar ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์ฑ„์›Œ์ค๋‹ˆ๋‹ค. 2.2. Web View Web View์˜ AutoLayout์€ ๋ชจ๋“  ํ™”๋ฉด์— ๊ฝ‰์ฐจ๋„๋ก Top, Bottom, Leading, Trailing์— ๋Œ€ํ•œ Constraints๋ฅผ ๋ชจ๋‘ 0์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 2.3. Acti..