iOS/Swift (6) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ARC ์์๋ณด๊ธฐ ARC๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌiOS ์ ๊ฒฝ์ฐ ARC ๋ฅผ ์ฌ์ฉํ์ฌ, ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ๋ค.ํ์์๋ ์ฃผ๋ก ํฌ๊ธฐ๊ฐ ํฌ๊ณ ์ค๋ซ๋์ ์ ์ฅ๋์ด ๊ด๋ฆฌํ ํ์๊ฐ ์๋ ๋ฐ์ดํฐ๋ค์ด ํ ๋น๋๋๋ฐ, ํ ๋น๋ ๋ฐ์ดํฐ๋ฅผ ํด์ ํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๋ค.๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ์ฒด์ ๊ฐ์ฒด๊ฐ ์๋ก๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ ๊ฐํ ์ฐธ์กฐ ์ธ์ดํด์ด ๋ฐ์์ ํ์ฌ, ํ์ ์ฌ๋ผ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํด์ ์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ์ง ์๋๋ค.๊ทธ๋์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด weak ์ unowned ์ด๋ค.๊ณตํต์ ๊ฐ๋ฆฌํค๋ ๋ ํผ๋ฐ์ค ์นด์ดํ ์ ์ฌ๋ฆฌ์ง ์๋๋ค๋ ์ ์ฐจ์ด์ weak๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๊ฐ ์ฌ๋ผ์ง๋ฉด nil ์ ์๋์ผ๋ก ํ ๋นํ๋ค.nil์ ํ ๋นํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์, var ๋ก ์ ์ธํด์ผ ํ๋ฉฐ, ๋ฌด์กฐ๊ฑด optional ์ด์ด์ผ ํ๋ค.unowned๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๊ฐ ์ฌ๋ผ์ ธ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์์.. Struct / Class ๋ ๋ฌด์์ธ๊ฐ? Struct๊ตฌ์กฐ์ฒด์ ๊ฒฝ์ฐ ๊ฐ ํ์ ์ด๋ค. ๊ฐ ํ์ (Value Type) ์ ํด๋น ํ์ ์ ์ธ์คํด์ค๊ฐ ๋ณต์ฌ๋ ๋ ์ธ์คํด์ค์ ์ค์ ๋ฐ์ดํฐ๊ฐ ๋ณต์ฌ๋๋ค. ์ด๋ ํ๋์ ์ธ์คํด์ค๋ฅผ ์์ ํ๋๋ผ๋ ๋ค๋ฅธ ๋ณต์ฌ๋ณธ์ ์ํฅ์ ๋ฏธ์น์ง ์๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ฐ์ ์ ์ฅ์ ์คํ์์ ์ผ์ด๋๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ์์ ์๋์ผ๋ก ์ ๊ฑฐ๋๋ค. ํด๋น ์ธ์คํด์ค๋ฅผ let์ผ๋ก ์ ์ธ ์ ์ ์ฅ ์์ฑ์ด ์ ๋ถ ์์๋ก ์ ์ฅ๋๋ค. ๋ ๋ฉค๋ฒ์์ด์ฆ ์ด๋์ ๋ผ์ด์ ๋ฅผ ์๋์ผ๋ก ์ ๊ณตํ๋ฉฐ, ๋ฉ์๋ ๋ด์์ ์์ฑ ๋ณ๊ฒฝ์ด ์์น์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ค. ๋ค๋ง mutating ํค์๋๋ก ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๊ธด ํ๋ค. ์๋ฉธ์๋ ์กด์ฌํ์ง ์์ผ๋ฉฐ ์์์ด ๋ถ๊ฐ๋ฅํ๋ค.struct Student { var name: String var gender: String init(name: String, gender: Str.. Design Pattern in Swift [ ์์ฑ ํจํด ] 1) ๋น๋ ํจํด (Builder Pattern) - ์ด๋ค Product ์ ์ด๋ฅผ ๋ง๋๋ Builder๋ก ๊ตฌ์ฑ - ์ด ํจํด์ Swift์ ๊ทธ๋ ๊ฒ๊น์ง ์ ํจํ ํจํด์ ์๋ -> ๋๋ถ๋ถ ์ด๊ธฐํ ๋ฉ์๋์ ํ๋กํผํฐ ๊ธฐ๋ณธ๊ฐ์ ํ์ฉํ์ฌ ํด๊ฒฐ ๊ฐ๋ฅ - ํ๋กํผํฐ์ ๊ฐ์๊ฐ ๊ต์ฅํ ๋ง์์ง๊ณ ๋ณต์กํด์ง๋ ๊ฒฝ์ฐ์ ์ ์ฉ struct MacBook { let color: String let memory: Int let storage: String let hasTouchBar: Bool } class MacBookBuilder { private var color = "Space Gray" private var memory = 16 private var storage = "256GB" private var hasTouchBar = fal.. [Swift] ์ด๋ฏธ์ง๋ฅผ ์ํ ์ด๋ฏธ์ง๋ก ๋ณ๊ฒฝํ๊ณ ํ ๋๋ฆฌ ์ค์ ํ๋ ๋ฐฉ๋ฒ ์ด๋ฏธ์ง๋ฅผ ์ํ ์ด๋ฏธ์ง๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. ์ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ํ์ด๋ฏธ์ง๋ก ๋ฐ๊พธ๊ธฐ ์ํด์๋ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์กฐ์ ํด์ผ ํ๋ค. ๋๋ต์ ์ธ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ์๊ฐํด ๋ณด์๋ฉด ์ด๋ ๋ค. 1. ํด๋น imageView์ cornerRadius ๋ฅผ heigt ๊ธธ์ด์ ์ ๋ฐ์ผ๋ก ์ค์ ํ๋ค. 2. imageView์ borderWidth๋ฅผ ์ํ๋ ๋งํผ ์ค์ ํ๋ค. 3. borderColor๋ฅผ ์ค์ ํ๋ค. ์ด๋ฅผ ์ฝ๋๋ก ์์ฑํด ๋ณด๋ฉด ์ด๋ ๊ฒ ๋๋ค. ๋๋ ๊ฐ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ width, height ๊ฐ ๊ฐ๊ฐ 120 ์ธ ์ ์ฌ๊ฐํ์ผ๋ก ๋ง๋ค์๊ธฐ ๋๋ฌธ์ cornerRadius๋ฅผ 60์ผ๋ก ๊ณ ์ ํ ์ ์์๋ค. ๋ง์ฝ heigt์ ๊ธธ์ด๊ฐ ๊ฐ๊ฐ ๋ค๋ฅด๋ค๋ฉด height / 2 ๋ฅผ ํ์ฉํด์๋ cornerRadius ๋ฅผ ์ง์ ํ ์ ์๊ฒ ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด.. [1day - 6day TIL] 100 days of swift 1์ผ์ฐจ Coursera ๊ฐ์์ ๊ฒน์น๋ ๋ถ๋ถ์ด ๋ง์์ ๊ณต๋ถํ๋ ๋ฐ์ ํฌ๊ฒ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์๋ค. ๊ทธ๋๋ ์๋กญ๊ฒ ์๊ฒ ๋ ๊ฐ๋ ๋ ์์ผ๋ ์ ๋ฆฌ๋ฅผ ํด๋ณด์. Multi-line strings var str2 = """ This goes \ over multiple \ lines """ //output: This goes over multiple lines => / ๋ฅผ ํ์ฉํด ๋ฌธ์ฅ์ด ๋๋์ง ์๊ณ ํ ๋ฌธ์ฅ์ผ๋ก ๋ฌธ์์ด์ ๋ํ๋ผ ์ ์๋ค. ๋ฌธ์์ด์ด ๊ธธ ๋ ๊น๋ํ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ข์ ๊ฒ ๊ฐ๋ค. var str1 = """ This goes over multiple lines """ //output: // This goes // over multiple // lines => ์ด ์์ด๋ ์ ๋ ฅํ ๊ทธ๋๋ก ๋ฌธ์์ด์ด ์ฐ์ถ๋๋ค. 2.. [3/18 - 3/22 TIL] Coursera - LearnQuestIntroduction to Programming in Swift 5 3/ 18 * Pow: ์ ๊ณฑ Sqrt: ๋ฃจํธ * ํ๋๋ int ํ๋๋ double ์ด๋ฉด ๊ณฑ์ ์์ผ๋ก ๋์ ๊ณฑํ ๋ ์๋ก ๋ฌ๋ผ์ ์๋ฌ๊ฐ ๋จ. ๊ทธ๋ด ๋๋ ํ๋๋ฅผ ๋ค๋ฅธ ํ๋์ ๋ง์ถฐ์ฃผ๋ฉด ๋๋๋ฐ, ์๋ฅผ ๋ค์ด Dluble(๋ณ์๋ช ) ์ด๋ฐ์์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋จ. ์ฒ์์ผ๋ก Coursera ์์ swift ๊ฐ์๋ฅผ ๋ค์๋ค. ์์ง์ ์์ ๊ธฐ์ด๋จ๊ณ๋ผ ์ง๋๊ฐ ์ฝ๊ฒ ์ฝ๊ฒ ๋์ด๊ฐ๋ค. ์ธ์ด๊ฐ ๋ฌ๋ผ๋ ํ๋ก๊ทธ๋จ์ด ์๋ํ๋ ๋ฐฉ์์ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค๋ ๊ฑธ ๋ชธ์ ์ค๊ฐํ๋ค. 3/19 var students = [String]() // initialize var studentsList2: [string] // declare students.append("John Adams") print(students) => initialize ๋ ๋น ๋ฐฐ์ด์ ๋ง๋๋ .. ์ด์ 1 ๋ค์