๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŽ iOS & ๐Ÿ”น Flutter/๐Ÿ˜ถ ๊ถ๊ธˆ์ฆ5

[iOS] ARC_๊ฐ์ฒด ์ˆ˜๋ช…, weak์™€ unowned ์ฐจ์ด Swift์—์„œ struct์™€ ๊ฐ™์€ ๊ฐ’ ํƒ€์ž…์ด ์•„๋‹ˆ๋ผ, class์™€ ๊ฐ™์€ ์ฐธ์กฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฐธ์กฐ ์นด์šดํŠธ, Reference Count๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์• ํ”Œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜, ์ฐธ์กฐํ•  ๋•Œ ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์‚ฌ์šฉ์„ ์™„๋ฃŒํ•˜๋ฉด ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค.Objective -C์—์„œ๋Š” ์ด๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ–ˆ์—ˆ๊ณ , ๊ทธ๊ฒƒ์„ MRC Manual Reference Counting ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ Swift์—์„œ๋Š” ์ง์ ‘์ ์œผ๋กœ ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. complier๊ฐ€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ž๋™์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„์„ ํ†ตํ•ด ์•Œ์•„์„œ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ ์ด๋ฅผ ARC Automatic Reference Counting์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.. 2024. 3. 21.
[iOS] Swift์˜ ์ปดํŒŒ์ผ๋Ÿฌ _ LLVM โค๏ธ Swift Compiler _ LLVM LLVM์€ 2000๋…„ ์ผ๋ฆฌ๋…ธ์ด ๋Œ€ํ•™์—์„œ Chris Lattner ์™ธ ๋ช‡ ๋ช…์œผ๋กœ ๊ตฌ์„ฑ๋œ ์—ฐ๊ตฌ ํŒ€์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ •์  ๋ฐ ๋™์  ์ปดํŒŒ์ผ์„ ๋ชจ๋‘ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„๋Œ€์ ์ธ ์ปดํŒŒ์ผ ์ „๋žต์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ตฌ ํ”„๋กœ์ ํŠธ๋กœ ์‹œ์ž‘๋˜์—ˆ๋‹ค. intermediate / binary ๊ธฐ๊ณ„ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑ, ์ตœ์ ํ™”, ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” intermediate, binary ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๐Ÿ“’ ์ปดํ“จํ„ฐ์˜ ํ•˜๋“œ์›จ์–ด๋Š” Binary Code๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋“ค์„ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ž‘์—…์„ ๊ฑฐ์ณ์•ผ ํ•˜๋Š”๋ฐ ์ด๋•Œ Intermediate Representation, ์ฆ‰ ์ค‘๊ฐ„ํ‘œํ˜„์„.. 2024. 3. 12.
[NSCache&URLCache]์™œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด URLCache์—์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋””์Šคํฌ์— ์ €์žฅ๋ ๊นŒ? ์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ, ๋ฏผํŠธ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ˆ๋ฐ์ดํ„ฐ๋“ค์€ ์–ด๋””์— ์ €์žฅ๋˜๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋ ๊นŒ์š”?๋จผ์ € ํ•˜๋“œ ๋””์Šคํฌ์— ์šฐ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ์ „๋ถ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ํ•˜๋“œ ๋””์Šคํฌ๋Š” ์šฉ๋Ÿ‰์ด ๋งค์šฐ ํฌ๊ณ , ๊ธฐ์–ต์„ ํ•˜๋Š” ๊ฒƒ์— ์น˜์ค‘๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.RAM, ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ทธ๋Ÿฌํ•œ ํ•˜๋“œ ๋””์Šคํฌ์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ์— ํ•„์š”ํ•œ ์ค‘์š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ๋‚ด์šฉ์€ ๋ฐฉ๋Œ€ํ•˜๊ณ , RAM์€ ๋””์Šคํฌ๋ณด๋‹จ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋Š” ์–‘์ด ์ ๊ณ , CPU์™€ ๊ฐ€๊นŒ์›Œ์„œ ๋น ๋ฅด์ง€๋งŒ ์–ด์ฐŒ ๋˜์—ˆ๊ฑด ๊ธฐ์–ต์„ ํ•˜๋Š” ๊ฒƒ์—๋งŒ ๋Šฅ๋ ฅ์ด ์น˜์ค‘๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.CPU๋Š” RAM์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋“ค์„ ์ด์šฉํ•ด ์•ฑ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์–ต๋ณด๋‹ค๋Š” ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•ด, ๊พธ์ค€ํ•˜๊ฒŒ ์„ฑ๋Šฅ์ด ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— RAM๊ณผ CPU๋Š” ๊ธฐ์–ต๊ณผ ์„ฑ๋Šฅ์œผ๋กœ ๊ฐ์ž์˜ ๋ชฉ์ ์ด ๋‹ค๋ฅด๊ธฐ์— ์„œ๋กœ์„œ๋กœ ์„ฑ๋Šฅ์ฐจ์ด๊ฐ€ ์ ์  ์‹ฌํ•˜๊ฒŒ ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. .. 2024. 1. 28.
[UIKit]loadView์— view๋Š” ์–ธ์ œ ํ• ๋‹น๋ ๊นŒ? ์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ, ๋ฏผํŠธ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ˆloadView์— View๋Š” ์–ธ์ œ ํ• ๋‹น๋ ๊นŒ์š”?์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ์ง  ์ฝ”๋“œ์—์„œ ์‹คํ—˜ํ•ด ๋ณธ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์˜ˆ์ƒ์œผ๋กœ๋Š”, super.loadView()๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” view๊ฐ€ nil์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— LLDB๋กœ view๋ฅผ loadView() ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ฐ์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์˜ˆ์ƒ๊ณผ๋Š” ๋‹ค๋ฅธ ์ผ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. super.loadView()๊ฐ€ ๋ถˆ๋ฆฌ๊ธฐ ์ „์— po view๋กœ ์ฐ์–ด๋ณด๋‹ˆ, loadView์™€ loadView๋์ด ์ฐํžˆ๋”๋‹ˆ, ๊ฐ’์ด ๋œจ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์ฐธ๊ณ ๋กœ ์˜†์— UIViewController์˜ view๋Š” (id) 0x0์œผ๋กœ ํ• ๋‹น๋˜์–ด ์žˆ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜์ธ๊ฐ€? ์™œ view๊ฐ€ ์ฐํžˆ์ง€?๊ทธ๋ž˜์„œ loadView()๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์ฐ์–ด๋ณด๊ณ  ํ•˜๋‚˜์”ฉ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ po v.. 2024. 1. 27.
[Swift]super.init()์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ–ˆ๋˜ ๊ฒฝ์šฐ ์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ, ๋ฏผํŠธ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ˆ super.init()์— ๋Œ€ํ•ด์„œ ์ด๊ฒƒ์ €๊ฒƒ ์ฐพ์•„๋ณด๋‹ค ์‹ ๊ธฐํ•œ ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.class A { init(some: String) { print("a") }} A์™€ ๊ฐ™์ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” init์˜ ๊ฒฝ์šฐ์—๋Š”, ์ƒ์†์„ ํ•ด์„œ ๋‚ด๋ถ€์— ๋ณ€ํ™”๋ฅผ ์ค„ ๋•Œclass B: A { override init(some: String) { super.init(some: some) print("b") }}๋ฐ˜๋“œ์‹œ super.init์„ ๋ถˆ๋Ÿฌ์•ผ ํ•œ๋‹ค๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๊ฐ€ ๋–ด์Šต๋‹ˆ๋‹ค. 2๋‹จ๊ณ„ ์ดˆ๊ธฐํ™”์—์„œ ๋ณด๋ฉด, customize๋œ ์ดˆ๊ธฐํ™”๋Š” 1. superClass์™€ subclass๊ฐ€ ์žˆ์„ ๋•Œ subClass ์ดˆ๊ธฐํ™” 2. superClass ์ดˆ๊ธฐํ™” ์ˆœ์œผ๋กœ ์˜ฌ๋ผ๊ฐ„.. 2023. 11. 8.