Study 7

[swift] ARC์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

TIL>์˜ค๋Š˜์€ iOS ์•ฑ ๊ฐœ๋ฐœ ์‹ฌํ™” ์ฃผ๊ฐ„ ์‹œ์ž‘ํ•˜๋Š” ๋‚ ์ด์—ˆ๋‹ค.(ํŒ€๋„ ์ƒˆ๋กœ ๋ฐ”๋€Œ์—ˆ๋Š”๋ฐ, ๋‹ค๋“ค ๋„˜ ํ™œ๋‹ฌํ•˜์…”์„œ ์ข‹๋‹ค..โ˜บ๏ธ)๊ฐ•์˜๋Š” ๋‹ค ๋“ค์—ˆ๋Š”๋ฐ,์•„์ง ์ „์ฒด์ ์œผ๋กœ ์ดํ•ด๋ฅผ ๋ชป ํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ๋‚ด์ผ ํ•œ ๋ฒˆ ๋” ๋“ฃ๊ณ  ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋‹ค.์˜ค๋Š˜์€ ์ง€๋‚œ Escaping Closure ๊ฒŒ์‹œ๊ธ€์— ์ด์–ด์„œARC์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ARCARC๋Š” Automatic Reference Counting์˜ ์•ฝ์ž๋กœSwift๋Š” ์ด ARC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Heap ์˜์—ญ์˜ ๊ฐ์ฒด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.Swift๋Š” ์ปดํŒŒ์ผ ์‹œ์— ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ ์ ˆํžˆ ๋„ฃ์–ด์คŒ์œผ๋กœ์จ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.โ˜บ๏ธRC(Reference Counting)์€ ๋ง ๊ทธ๋Œ€๋กœ!!์ฐธ์กฐ(reference)๋ฅผ ์„ธ์„œ ํ•ด๋‹น ..

[Swift] Escaping Closure

Escaping Closure(์ด์Šค์ผ€์ดํ•‘ ํด๋กœ์ €)์ด์Šค์ผ€์ดํ•‘ ํด๋กœ์ €๋Š” ํด๋กœ์ €๊ฐ€ ํ•จ์ˆ˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋์„ ๋•Œ, ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋œ ํ›„์— ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜์—์š”!(์—์ž‡.. ํด๋กœ์ €๋„ ์–ด๋ ค์šด๋ฐ, ์ด์Šค์ผ€์ดํ•‘ ํด๋กœ์ €๋Š” ๋˜ ๋ชจ์•ผ??๐Ÿ˜ก์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค..ํ•˜ํ•˜ํ•˜) ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋Œ€๋กœ Non-escaping Closure๋„ ์žˆ์–ด์š”.์ด๋…€์„์€ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ํด๋กœ์ €์ž…๋‹ˆ๋‹ค!์ด์ œ ์ฐจ๊ทผ์ฐจ๊ทผ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์ •๋ฆฌํ•ด๋ณผ๊ฒŒ์š”!! func escapingClosureEX(completion: () -> Void) { completion()}์ด์ œ ์ด๋Ÿฐ ํ˜•ํƒœ๋Š” ํด๋กœ์ €๋ผ๋Š” ๊ฑด ์•Œ ์ˆ˜ ์žˆ์ฃ ?ํด๋กœ์ €์˜ ๊ฐœ๋…์„ ์•„์ง ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด,์˜ค๋Š˜์€ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค.์ด์ „์— ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ, ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ„๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ๋ง‰์ƒ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๋ง๋กœ ์„ค๋ช…ํ•˜๋ ค๊ณ  ..

[Swift] ๊ณ ์ฐจํ•จ์ˆ˜(map, filter, reduce)

๊ณ ์ฐจํ•จ์ˆ˜(Higher-order Function) "๊ณ ์ฐจํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ผ๊นŒ?๐Ÿคจ"๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ์ธ์ž(๋งค๊ฐœ๋ณ€์ˆ˜)๋กœ ๋ฐ›๊ฑฐ๋‚˜ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.์Œ..?๐Ÿงํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฐ›๊ณ .. ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค..?ํด๋กœ์ €..?๋งž์•„์š”..! ์ด๋…€์„๋„ ์ผ๊ธ‰๊ฐ์ฒด(first-class object)์™€ ์—ฐ๊ด€์ด ์žˆ์Šต๋‹ˆ๋‹ค!๐Ÿซข์•ž์„œ ํ•œ ๋ฒˆ ๋” ์ •๋ฆฌํ–ˆ์—ˆ๋˜ ํด๋กœ์ €! 7์ฃผ์ฐจ_5์ผ์ฐจ_์•ฑ ๊ฐœ๋ฐœ ์ˆ™๋ จ_Closure(ํด๋กœ์ €)_๊ฐœ์ธ๊ณต๋ถ€_TIL์˜ค๋Š˜์€ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค. ์ด์ „์— ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ, ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ„๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ๋ง‰์ƒ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๋ง๋กœ ์„ค๋ช…ํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ ๊นŒ๋จน์€ ๊ฒƒ ๊ฐ™์•˜๋‹ค. (๊ณผ๊ฑฐ ํด๋กœ์ € ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด ์žyegenie-coding.tistory.com Named Closure, Unnamed Closure๋Š” ์ผ๊ธ‰..

[Swift] Show Library ํ™œ์šฉ (Navigation Bar, Label, Button, Text Field)

Xcode project ํŒŒ์ผ ๋งŒ๋“ค์–ด์„œ ์•„๋ž˜ ์š”๊ตฌ์‚ฌํ•ญ ๋งŒ๋“ค์–ด๋ณด๊ธฐ!! โ‘  Navigation Bar ์—ฐ๊ฒฐํ•˜๊ธฐ โ‘ก 1๋ฒˆ view์— 2๋ฒˆ view๋กœ ๋„˜์–ด๊ฐ€๋Š” button ๋งŒ๋“ค๊ธฐ 1. ๋ฒ„ํŠผ ์ƒ์„ฑ ํ›„, ์ƒˆ๋กœ์šด ViewController๋ฅผ ๋งŒ๋“ค๊ธฐ 2. ๋‘ ๊ฐœ์˜ ViewController ๊ตฌ๋ถ„ํ•˜๊ธฐ ์‰ฝ๊ฒŒ background ์ƒ‰์ƒ ๋„ฃ๊ธฐ 3. SecondViewController ์ƒˆ๋กœ์šด ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ 4. StoryBoard์— SecondViewController Class ์—ฐ๊ฒฐํ•˜๊ณ , StoryBoard ID ๋„ฃ์–ด์ฃผ๊ธฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ๋ฒ„ํŠผ ํด๋ฆญ์‹œ SecondVC๋กœ ๋„˜์–ด๊ฐ! โ‘ข 2๋ฒˆ view์— 1๋ฒˆ view๋กœ ๋„˜์–ด๊ฐ€๋Š” button ๋งŒ๋“ค๊ธฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•„๋ž˜ ์˜์ƒ์ฒ˜๋Ÿผ ํ™”๋ฉด ์ „ํ™˜๋จ! โ‘ฃ 1๋ฒˆ view์— textField, 2๋ฒˆ v..

ํ…Œ์ด๋ธ” ๋ทฐ(UITableView)_[iOS/Swift]_(2)

2024.03.02 - [Study/YouTube ๊ฐ•์˜ ๊ณต๋ถ€] - ํ…Œ์ด๋ธ” ๋ทฐ(UITableView)_[iOS/Swift]_(1) ์—ฌ๊ธฐ์„œ ๊ทธ๋Œ€๋กœ ์ง„ํ–‰! โ‘  Main.storyboard - Table view์— Table View Cell ์ถ”๊ฐ€ - ์‚ฌ์ด์ฆˆ ์กฐ๊ธˆ ๋Š˜๋ฆฌ๊ณ , ์•ˆ์— Label ์ถ”๊ฐ€ (Label → ์ค‘์•™์ •๋ ฌ, Add New Constraints์—์„œ ์ƒํ•˜์ขŒ์šฐ 0์œผ๋กœ ์…‹ํŒ…) โ‘ก ์ถ”๊ฐ€ํ•œ Table View cell ํด๋ฆญ - ์šฐ์ธก ์ฐฝ → Identifier : ์ด๋ฆ„ ('Identifier: Type1' ์œผ๋กœ ํ•˜๊ฒ ์Œ, ) โ‘ข ์•ž์„œ 1๋ฒˆ์งธ ๋ฐฉ๋ฒ•์—์„œ reuseIdentifier์„ "TableViewFirstType"์ด๋ผ๊ณ  ์ •ํ–ˆ์—ˆ๋‹ค. ์ด์ œ๋Š” ์ด ์ด๋ฆ„์ด "Type1"์ด ๋œ๋‹ค. ์ด "Type1"์„ ์ง€์ •ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ํ•„..

ํ…Œ์ด๋ธ” ๋ทฐ(UITableView)_[iOS/Swift]_(1)

TableView ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์ •๊ฐˆํ•˜๊ฒŒ ๋ณด์—ฌ์ง€๊ธฐ ์œ„ํ•ด์„œ? ์ „ํ™”๋ฒˆํ˜ธ๋ถ€๋งŒ ์ƒ๊ฐํ•ด๋ด๋„ ์—ฌ๋Ÿฌ ์ •๋ณด๋“ค์„ ๋‹ด๋Š” ํ™”๋ฉด์˜ ๊ฒฝ์šฐ์—๋Š” TableView๊ฐ€ ์œ ์šฉํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์œ ์‚ฌํ•œ UI๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐ€๋ณ€ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค. TableView๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ?๐Ÿค” 1. ํ…Œ์ด๋ธ”์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€. (ex) ์ „ํ™”๋ฒˆํ˜ธ๋ถ€, ์•„์ดํฐ Setting ์•ฑ , โˆ™โˆ™โˆ™ 2. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ ๊ฐœ์ธ๊ฐ€? (ex) 100๊ฐœ, 1000๊ฐœ, 10000๊ฐœ, โˆ™โˆ™โˆ™ 3. ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ํ–‰์„ ํด๋ฆญํ•˜๋ฉด? - (ํ•„์ˆ˜ X) โ‘  XCode - ์•ฑ ์ƒ์„ฑ → (์ด๋ฆ„: MyTableView)์œผ๋กœ ํ•˜๊ฒ ์Œ. โ‘ก ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ Show Library - Table View ์ถ”๊ฐ€ - ํ•˜๋‹จ์—..

์›น๋ทฐ(WKWebView)_[iOS/Swift]

XCode์—์„œ ์›ํ•˜๋Š” WebSite๋ฅผ ๋„์›Œ๋ด…์‹œ๋‹ค!!!๐Ÿ˜ƒ ์›น(web) ๋„์šฐ๋Š” ๋ฐฉ๋ฒ• โ–ท Show Library์—์„œ 'WebKit View' ์ƒ์„ฑ โ–ท contorl - drag & drop (Viewcontroller์™€ ์—ฐ๊ฒฐ) โ‘  import WebKit โ‘ก ๋„์šฐ๊ณ  ์‹ถ์€ url String ์ค€๋น„ (โ–ท ์›น(Web) ์ฃผ์†Œ) โ‘ข url → request โ‘ฃ request → load import WebKit let A = "https:// ~~~~~~~~" if let B = URL(string: A) { let C = URLRequest(url:B) WebView์ƒ์„ฑ์ด๋ฆ„.load(C) }