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

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 ๋Š” ๋นˆ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ..