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

swift230

[Swift] ์ดˆ๊ธฐํ™” ์ดˆ๊ธฐํ™” (Initialization)ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ค€๋น„ ์ž‘์—…์„ ํ•˜๋Š” ๋‹จ๊ณ„๊ฐ ์ €์žฅ ํ”„๋กœํผํ‹ฐ์˜ ์ดˆ๊ธฐ ๊ฐ’์„ ์„ค์ • →initializer๋ฅผ ์ •์˜ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌํ˜„ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋ฅผ ์œ„ํ•œ ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •์ธ์Šคํ„ด์Šค์˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์ „ ๋ฐ˜๋“œ์‹œ ํŠน์ • ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋ผ์•ผ ํ•จ (๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์„ค์ •/ํŠน์ • ๊ฐ’์œผ๋กœ ์„ค์ • ๊ฐ€๋Šฅ)NOTEinitializer์—์„œ ์ €์žฅ ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ์ง์ ‘ ์„ค์ •ํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š๊ณ  ๊ฐ’ ํ• ๋‹น์ด ์ˆ˜ํ–‰ ์ด๋‹ˆ์…œ๋ผ์ด์ €ํŠน์ • ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ (์ด๋‹ˆ์…œ๋ผ์ด์ €์˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ_ ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์ด init ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ)init() {// perform some initialization here}๊ธฐ๋ณธ ํ”„๋กœํผํ‹ฐํ”„๋กœํผํ‹ฐ ์„ ์–ธ๊ณผ ๋™์‹œ์— ๊ฐ’์„ ํ• ๋‹น, ์ด ๊ฐ’์„ ์ดˆ๊ธฐ ๊ฐ’์œผ.. 2024. 3. 25.
[Swift] ์ƒ์† ์ƒ์†(Inheritance)ํด๋ž˜์Šค์—์„œ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ ๋ถ€ํ„ฐ ์ƒ์†ํ•  ์ˆ˜ ์žˆ์Œํด๋ž˜์Šค์—์„œ ์ €์žฅ ํ”„๋กœํผํ‹ฐ, ๊ณ„์‚ฐ ํ”„๋กœํผํ‹ฐ ์ƒ๊ด€์—†์ด ์ƒ์† ๋ฐ›์€ ํ”„๋กœํผํ‹ฐ์— ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’ ์„ค์ •์— ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ์Œ๊ธฐ๋ฐ˜ํด๋ž˜์Šค๋‹ค๋ฅธ ์–ด๋–ค ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์ง€ ์•Š์€ ํด๋ž˜์Šค SomeSuperclass์„œ๋ธŒํด๋ž˜์‹ฑ๋ถ€๋ชจ๋กœ ๋ถ€ํ„ฐ ์„ฑ๊ฒฉ์„ ์ƒ์†๋ฐ›๊ณ  ์ž์‹  ๊ณ ์œ ์˜ ํŠน์„ฑ๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œclass SomeSubclass: SomeSuperclass { // subclass definition goes here}์„œ๋ธŒํด๋ž˜์‹ฑ์€ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ (Overriding)์„œ๋ธŒํด๋ž˜์Šค์—์„œ ๋ถ€๋ชจํด๋ž˜์Šค์—์„œ ์ƒ์†๋ฐ›์€ ๊ฒƒ์„ ์žฌ์ •์˜์ธ์Šคํ„ด์Šค, ๋ฉ”์†Œ๋“œ, ํƒ€์ž… ๋ฉ”์†Œ๋“œ, ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ, ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ๋ชจ๋‘ ๊ฐ€๋Šฅ๋‹ค๋ฅธ ์„ ์–ธ ์•ž์— overrideํ‚ค์›Œ๋“œ ๋ถ™์—ฌ .. 2024. 3. 22.
[Swift] ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ(Subscripts)ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ๊ทธ๋ฆฌ๊ณ  ์—ด๊ฑฐํ˜•์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜ํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ์ฝœ๋ ‰์…˜, ๋ฆฌ์ŠคํŠธ, ์‹œํ€€์Šค ๋“ฑ ์ง‘ํ•ฉ์˜ ํŠน์ • ๋ฉค๋ฒ„ ์—˜๋ฆฌ๋จผํŠธ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์ถ”๊ฐ€์ ์ธ ๋ฉ”์†Œ๋“œ ์—†์ด ํŠน์ • ๊ฐ’์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œํ•˜๋‚˜์˜ ํƒ€์ž…์— ์—ฌ๋Ÿฌ ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ณ  ์˜ค๋ฒ„๋กœ๋“œ(Overload)๋„ ๊ฐ€๋Šฅ๋‹จ์ผ ์ธ์ž ๊ฐ’์„ ๋„˜์–ด, ํ•„์š”์— ๋”ฐ๋ผ ๋ณต์ˆ˜ ์ธ์ž ๊ฐ’ ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ• (Subscript Syntax)์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋Š” ์ฝ๊ณ -์“ฐ๊ธฐ(read-write) ํ˜น์€ ์ฝ๊ธฐ ์ „์šฉ(read only)๋งŒ ๊ฐ€๋Šฅsetter, getter ๋ฐฉ์‹์„ ๋”ฐ๋ฆ„subscript(index: Int) -> Int { get { // ์ ์ ˆํ•œ ๋ฐ˜ํ™˜ ๊ฐ’ } set(newValue) { .. 2024. 3. 22.
[Swift] ๋ฉ”์„œ๋“œ ๋ฉ”์„œ๋“œ(Methods)ํŠน์ • ํƒ€์ž…์˜ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•๊ณผ ๊ด€๋ จ๋œ ํ•จ์ˆ˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ (Instance Methods)ํŠน์ • ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์˜ ์ธ์Šคํ„ด์Šค์— ์†ํ•œ ๋ฉ”์„œ๋“œ์ธ์Šคํ„ด์Šค ๋‚ด์˜ ๊ฐ’์„ ์ œ์–ดํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์ธ์Šคํ„ด์Šค๊ฐ€ ์†ํ•œ ํŠน์ • ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์—์„œ๋งŒ ์‹คํ–‰ ๊ฐ€๋Šฅclass Counter { var count = 0 func increment() { count += 1 } func increment(by amount: Int) { count += amount } func reset() { count = 0 }}let counter = Counter()// ์ดˆ๊ธฐ count ๊ฐ’์€ 0์ž…๋‹ˆ๋‹ค.counter.increment()// co.. 2024. 3. 21.
[Swift] ํ”„๋กœํผํ‹ฐ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๊ณ„์‚ฐ ํ”„๋กœํผํ‹ฐ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ณ  ํŠน์ •ํ•˜๊ฒŒ ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ”„๋กœํผํ‹ฐํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋ชจ๋‘์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ์ €์žฅ ํ”„๋กœํผํ‹ฐletํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์ˆ˜ ํ˜น์€ varํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด ์‚ฌ์šฉstruct FixedLengthRange { var firstValue: Int let length: Int}var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)// ๋ฒ”์œ„ ๊ฐ’์€ 0, 1, 2 ์ž…๋‹ˆ๋‹ค.rangeOfThreeItems.firstValue = 6// ๋ฒ”์œ„ ๊ฐ’์€ 6, 7, 8 ์ž…๋‹ˆ๋‹ค. ์ƒ์ˆ˜ ๊ตฌ์กฐ์ฒด ์ธ์Šคํ„ด์Šค์˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์ˆ˜(let)๋กœ .. 2024. 3. 20.
[Swift] ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด ํด๋ž˜์Šค VS ๊ตฌ์กฐ์ฒด๊ณตํ†ต์ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํผํ‹ฐ ์ •์˜๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ ์ •์˜ subscript ๋ฌธ๋ฒ•์„ ์ด์šฉํ•ด ํŠน์ • ๊ฐ’์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” subscript ์ •์˜์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” initializer ์ •์˜๊ธฐ๋ณธ ๊ตฌํ˜„์—์„œ ๊ธฐ๋Šฅ ํ™•์žฅํŠน์ •ํ•œ ์ข…๋ฅ˜์˜ ํ‘œ์ค€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ ์ˆœ์‘(conform)์ฐจ์ด์ (ํด๋ž˜์Šค๋งŒ ๊ฐ€๋Šฅ)์ƒ์† (Inheritance): ํด๋ž˜์Šค์˜ ์—ฌ๋Ÿฌ ์†์„ฑ์„ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ๋ฌผ๋ ค ์คŒํƒ€์ž… ์บ์ŠคํŒ… (Type casting): ๋Ÿฐํƒ€์ž„์— ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…์„ ํ™•์ธ์†Œ๋ฉธ์ž (Deinitializers): ํ• ๋‹น๋œ ์ž์›์„ ํ•ด์ œ(free up) ์‹œํ‚ด์ฐธ์กฐ ์นด์šดํŠธ (Reference counting): ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ฃผ ๋ชฉ์ ์ด ๊ด€๊ณ„๋œ ๊ฐ„๋‹จํ•œ ๊ฐ’.. 2024. 3. 19.
๋ฐ˜์‘ํ˜•