register(_:forCellWithReuseIdentifier:) ๋ฉ”์„œ๋“œ์—์„œ PosterCell.self๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

์…€ ์žฌ์‚ฌ์šฉ ๊ฐœ๋…UICollectionView๋Š” ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ์…€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•˜๊ณ , ํ™”๋ฉด ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ„ ์…€์€์žฌ์‚ฌ์šฉ ํ(reuse queue)์— ๋„ฃ์–ด์„œ ํ•„์š”ํ•  ๋•Œ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์Šคํฌ๋กคํ•  ๋•Œ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์…€์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋˜์–ด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค.  ์…€ ๋“ฑ๋ก ๊ณผ์ •1. ์…€ ํด๋ž˜์Šค ๋“ฑ๋กcollectionView.register(PosterCell.self, forCellWithReuseIdentifier: PosterCell.id) UICollectionView์— ์–ด๋–ค ํƒ€์ž…์˜ ์…€์„ ์‚ฌ์šฉํ• ์ง€ ๋“ฑ๋กํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ, register(_:forCellWithReuseIdentifier:) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.  2. ์žฌ์‚ฌ์šฉ ์‹๋ณ„์žlet cell = collectionView...

๐ŸŽ iOS/Swift 2024. 8. 4. 13:05

[ Swift ๊ธฐ์ดˆ ๋ฌธ๋ฒ• ] ์ œ๋„ค๋ฆญ(Generics)

๐Ÿ’ฌ  ์ œ๋„ค๋ฆญ ๋ฌธ๋ฒ•์ด ํ•„์š”ํ•œ ์ด์œ ํƒ€์ž…๋งŒ ๋‹ค๋ฅด๊ณ  ๊ตฌํ˜„ ๋‚ด์šฉ์ด ๋™์ผํ•œ๋ฐ ๊ตณ์ด ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐ˜๋ณตํ•ด์„œ ๋งŒ๋“ค์–ด์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ! ์ œ๋„ค๋ฆญ์ด ์—†๋‹ค๋ฉด ํ•จ์ˆ˜(๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ๋„ ๊ฐ€๋Šฅ) ํƒ€์ž…๋งˆ๋‹ค ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๋‹ค ์ •์˜ํ•ด์•ผํ•ด์„œ ๊ฐœ๋ฐœ์ž์˜ ํ• ์ผ์ด ๋งŽ์•„์ง„๋‹ค. -> ์œ ์ง€๋ณด์ˆ˜/ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์–ด๋ ค์›€ ์ฆ‰, ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜๋งŒ ๊ตฌํ˜„ํ•˜๋ฉด ๋‚ด๋ถ€์— ์žˆ๋Š” ํƒ€์ž…์€ ์–ธ์ œ๋“ ์ง€ ๋ฐ”๊ฟ”์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ-> ์ œ๋„ค๋ฆญ์ด ์—†๋‹ค๋ฉด ํ•จ์ˆ˜๋ฅผ ๋ชจ๋“  ํƒ€์ž…๋งˆ๋‹ค ๋‹ค์‹œ ์ •์˜ ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.-> ์—ฌ๋Ÿฌ๋ฒˆ ์ค‘๋ณตํ•ด์„œ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ํ•„์š”๊ฐ€ ์—†์–ด์ง„๋‹ค.   ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜•์‹์ด๋‚˜ ๋ฆฌํ„ดํ˜•์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ํ•จ์ˆ˜ ๋ฐ”๋””์—์„œ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅ.๋ณดํ†ต T๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์ด๋ฆ„ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅ. 2๊ฐœ ์ด์ƒ๋„ ๊ฐ€๋Šฅ.    ๐Ÿ”Ž  1 . ์ œ๋„ค๋ฆญ ํ•จ์ˆ˜ ์ •์˜ํ•จ์ˆ˜ ์ด๋ฆ„ ์˜†์— ..

๐ŸŽ iOS/Swift 2024. 7. 31. 17:17

[ Swift ] ์†์„ฑ ์ดˆ๊ธฐํ™” ์‹œ ๋ฐ”๋กœ ์ธ์Šคํ„ด์Šคํ™” ํ•˜๋Š” ๊ฒฝ์šฐ์™€ init ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•œ ์ดˆ๊ธฐํ™” ๋ญ๊ฐ€ ๋‹ค๋ฅด์ง€?

์—ฐ๋ฝ์ฒ˜ ๋งŒ๋“ค๊ธฐ ๊ณผ์ œ ํ•ด์„ค ์˜์ƒ์„ ๋ณด๋‹ค๊ฐ€ ์˜๋ฌธ์ด ๋“  ์ ์ด ์žˆ๋‹ค. ๋ฐ”๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋˜‘๊ฐ™์ด ์„ ์–ธํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ = ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์™€ : ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.  = (๋“ฑํ˜ธ)๋“ฑํ˜ธ(=)๋Š” ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด์„œ ์ดˆ๊ธฐ ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค. =์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์†์„ฑ์€ ํด๋ž˜์Šค๊ฐ€ ์ธ์Šคํ„ด์Šคํ™”๋  ๋•Œ ๋ฐ”๋กœ ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.  : (์ฝœ๋ก )์ฝœ๋ก (:)์€ ํƒ€์ž…์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ํ•ด๋‹น ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์„ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. :์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ดˆ๊ธฐ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  ํƒ€์ž…๋งŒ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๊ฐ’์€ ์ƒ์„ฑ์ž์—์„œ ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋‹ค.  ์ข€ ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž. ๐ŸŒŸ 1. ์†์„ฑ ์ดˆ๊ธฐํ™” ์‹œ ๋ฐ”๋กœ ์ธ์Šคํ„ด์Šคํ™”์ด ๋ฐฉ๋ฒ•์€ ํŠน์ • ..

๐ŸŽ iOS/Swift 2024. 7. 20. 18:42

[ Swift ] CRUD์™€ CoreData ํ”„๋ ˆ์ž„์›Œํฌ

โœ… CRUDCreat : ๋ฐ์ดํ„ฐ ์ƒ์„ฑ                          // ์ƒˆ๋กœ์šด ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ๋กRead : ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ                           // ์ €์žฅ๋œ ์ „ํ™”๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ ์กฐํšŒUpdate : ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ(์“ฐ๊ธฐ)     // ์ €์žฅ๋œ ์ „ํ™”๋ฒˆํ˜ธ ์ˆ˜์ •Delete : ๋ฐ์ดํ„ฐ ์‚ญ์ œ                         // ์ „ํ™”๋ฒˆํ˜ธ ์‚ญ์ œ    Swift๋กœ ๊ธฐ๊ธฐ ๋‚ด ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ CoreData์™€ UserDefault๊ฐ€ ๋Œ€ํ‘œ์ ์ด๋‹ค.๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ๋•Œ๋Š” CoreData, ๋น„๊ต์  ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ๋Š” UserDefault๊ฐ€ ์ ์ ˆํ•˜๋‹ค. โœ… CoreData์•ฑ์—์„œ ๊ธฐ๊ธฐ์˜ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š” ํ”„๋ ˆ์ž„์›Œํฌ   โœ… CoreData ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ St..

๐ŸŽ iOS/Swift 2024. 7. 14. 12:07

[ Swift ] ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ(ARC)

๐ŸŒŸ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ๋ฉ”๋ชจ๋ฆฌ๋””์Šคํฌ์ผ๋ฐ˜์ ์œผ๋กœ RAM์„ ๋งํ•จ(๋ช‡ GB)RAM์€ ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ โŒ→ ์•ฑ ์‹คํ–‰ ์ค‘ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์•ฑ์„ ์ข…๋ฃŒ ์‹œ ์‚ญ์ œ→ ์•ฑ ์‹คํ–‰์„ ์‹œํ‚ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ„๋‹ค.→ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์•ฑ์ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ด๋ ค์˜ฌ ๋•Œ ๊ฐ™์ด ๋‚ด๋ ค์˜ด→ RAM ์˜ ์šฉ๋Ÿ‰์ด ํด ์ˆ˜๋ก, ๋™์‹œ์— ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์•ฑ์˜ ์ด๋Ÿ‰ ๋งŽ์Œ๋””์Šคํฌ๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฆ„ (CPU๊ฐ€ ๋””์Šคํฌ๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— ๋” ๋นจ๋ฆฌ ์ ‘๊ทผ)๋””์Šคํฌ์— ๋น„ํ•ด ์šฉ๋Ÿ‰์ด ์ž‘์Œ (๋ณดํ†ต 8GB, 16GB, 32GB)EEPROM ๊ณผ ๊ฐ™์€ ๋น„ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ๋„ ์žˆ์Œ ์•„์ดํฐ์€ ์ด๊ณณ์— ์žฅ์น˜์˜ ์ผ๋ จ๋ฒˆํ˜ธ ๋ฐ ํ•˜๋“œ์›จ์–ด ์ •๋ณด๋ฅผ ์ €์žฅ์˜๊ตฌ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ. ๋น„ํœ˜๋ฐœ์„ฑ ์žฅ์น˜→ ์•ฑ ์‹คํ–‰ ์ค‘ ์•ฑ์„ ์ข…๋ฃŒํ•ด๋„ ๋””์Šคํฌ์— ์žˆ์ŒํŒŒ์ผ, ๋ฌธ์„œ, ํ”„๋กœ๊ทธ๋žจ ๋“ฑ ์ƒ๋Œ€์ ์œผ๋กœ ์šฉ๋Ÿ‰์ด..

๐ŸŽ iOS/Swift 2024. 7. 13. 12:12

components์™€ split ๋ฉ”์„œ๋“œ ๋น„๊ต / ๋ฌธ์ž์—ด์„ ํŠน์ • ๋ฌธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค ๋ณด๋ฉด ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค์ด์ง€๋งŒ๋น„์Šทํ•œ ๊ธฐ๋Šฅ ๋•Œ๋ฌธ์ธ์ง€ ๋งค๋ฒˆ ํ—ท๊ฐˆ๋ฆฌ๊ณค ํ•œ๋‹ค. ์ด์ฐธ์— ์ œ๋Œ€๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.   ๊ณตํ†ต์ components(separatedBy:) ๋ฉ”์„œ๋“œ์™€ split ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด์„ ํŠน์ • ๊ตฌ๋ถ„์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.     components(separatedBy:) Swift์˜ String ํƒ€์ž…์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ ๊ตฌ๋ถ„์ž ํƒ€์ž…: ๋‹จ์ผ ๋ฌธ์ž, ๋ฌธ์ž์—ด(String) ๋˜๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด([String])let text = "one,two;three four"let componentsResult = text.components(separatedBy: [",", ";", " "])print(componentsResult) // ["one", "two", "..

๐ŸŽ iOS/Swift 2024. 6. 27. 01:44

ํŽ˜์ด์ง•