π₯ Bread Basics/Swift32 Swift 곡μ λ¬Έμ μ 리 - κ³ κΈ μ°μ°μ (Advanced Operators) μλ νμΈμ. μ€λμ Swiftμ κ³ κΈ μ°μ°μμ λν΄ μμλ³΄κ² μ΅λλ€. κΈ°λ³Έ μ°μ°μλ³΄λ€ λ 볡μ‘ν κ°μ μ‘°μν μ μλ λΉνΈ μ°μ°μ, μ¬μ©μ μ μ μ°μ°μ, κ·Έλ¦¬κ³ κ²°κ³Ό λΉλκΉμ§ Swiftκ° μ 곡νλ λ€μν κ³ κΈ κΈ°λ₯μ μ΄ν΄λ³΄κ² μ΅λλ€.π λΉνΈ μ°μ°μ (Bitwise Operators)λΉνΈ μ°μ°μλ λ°μ΄ν° ꡬ쑰 λ΄μ κ°λ³ λΉνΈλ₯Ό μ§μ μ‘°μν μ μκ² ν΄μ£Όλ λꡬμ λλ€. μ μμ€ νλ‘κ·Έλλ°, κ·Έλν½ μμ , λλ°μ΄μ€ λλΌμ΄λ² κ°λ° λ±μ νΉν μ μ©ν©λλ€.λΉνΈ NOT μ°μ°μ (~)λΉνΈ NOT μ°μ°μλ λͺ¨λ λΉνΈλ₯Ό λ°μ μν΅λλ€. 0μ 1λ‘, 1μ 0μΌλ‘ λ°κΏλλ€.let initialBits: UInt8 = 0b00001111 // μ΄μ§μλ‘ 00001111 (μμ§μ 15)let invertedBits = ~initial.. 2025. 4. 13. Swift 곡μ λ¬Έμ μ 리 - μ κ·Ό μ μ΄ (Access Control) μλ νμΈμ. μ€λμ μ½λ ꡬ쑰νμ μΊ‘μνμ νμν 'μ κ·Ό μ μ΄(Access Control)'μ λν΄ μμλ³΄κ² μ΅λλ€. μ κ·Ό μ μ΄λ₯Ό ν΅ν΄ μ½λμ μ΄λ€ λΆλΆμ μΈλΆμ λ ΈμΆνκ³ , μ΄λ€ λΆλΆμ μ¨κΈΈμ§ ν¨κ³Όμ μΌλ‘ κ΄λ¦¬ν μ μμ΅λλ€.π μ κ·Ό μ μ΄λ?μ κ·Ό μ μ΄(Access Control)λ λ€λ₯Έ μμ€ νμΌμ΄λ λͺ¨λμμ μ½λμ μ κ·Όνλ κ²μ μ ννλ κΈ°λ₯μ λλ€. μ΄λ₯Ό ν΅ν΄ μ½λμ ꡬν μΈλΆ μ¬νμ μ¨κΈ°κ³ , μ½λκ° μ¬μ©λ μ μλ μΈν°νμ΄μ€λ₯Ό λͺ ννκ² μ μν μ μμ΅λλ€.μ κ·Ό μ μ΄μ μ£Όμ λͺ©μ :μ½λμ ꡬν μΈλΆ μ¬ν μ¨κΈ°κΈ°μ½λ μ¬μ©μ μν λͺ νν μΈν°νμ΄μ€ μ μμ€μλ‘ μΈν μλͺ»λ μ½λ μ¬μ© λ°©μ§λ΄λΆ ꡬν λ³κ²½ μ μΈλΆ μ½λμ λ―ΈμΉλ μν₯ μ΅μνπ λͺ¨λ, μμ€ νμΌ, ν¨ν€μ§μ μ΄ν΄Swiftμ μ κ·Ό μ μ΄λ₯Ό μ΄ν΄νκΈ° μν΄.. 2025. 4. 13. Swift 곡μ λ¬Έμ μ 리 - λ©λͺ¨λ¦¬ μμ μ± (Memory Safety) μλ νμΈμ. μ€λμ Swift νλ‘κ·Έλλ°μμ μ€μνμ§λ§ μ’ μ’ κ°κ³Όλλ κ°λ μΈ 'λ©λͺ¨λ¦¬ μμ μ±(Memory Safety)'μ λν΄ μμλ³΄κ² μ΅λλ€. λ©λͺ¨λ¦¬ μμ μ±μ μ΄ν΄νλ©΄ λ μμ μ μ΄κ³ μμΈ‘ κ°λ₯ν μ½λλ₯Ό μμ±ν μ μμΌλ©°, μ»΄νμΌ νμκ³Ό λ°νμ μ€λ₯λ₯Ό λ°©μ§ν μ μμ΅λλ€.π Swiftμ λ©λͺ¨λ¦¬ μμ μ±μ΄λ?Swiftλ κΈ°λ³Έμ μΌλ‘ μ½λμμ λ°μν μ μλ μμ νμ§ μμ λμμ λ°©μ§νλλ‘ μ€κ³λμμ΅λλ€. μλ₯Ό λ€μ΄:λ³μκ° μ¬μ©λκΈ° μ μ μ΄κΈ°νλλμ§ νμΈλ©λͺ¨λ¦¬κ° ν΄μ λ νμλ μ κ·Όνμ§ μλλ‘ λ³΄μ₯λ°°μ΄ μΈλ±μ€κ° λ²μλ₯Ό λ²μ΄λμ§ μλμ§ κ²μ¬κ·Έλ¦¬κ³ κ°μ₯ μ€μνκ², Swiftλ λ©λͺ¨λ¦¬μ λμΌν μμΉμ λν λ€μ€ μ κ·Όμ΄ μΆ©λνμ§ μλλ‘ λ³΄μ₯ν©λλ€. μ΄κ²μ΄ μ€λ μ€μ μ μΌλ‘ μ΄ν΄λ³Ό λ΄μ©μ λλ€.π λ©λͺ¨λ¦¬ μ κ·Ό μΆ©λ μ΄ν΄ν.. 2025. 4. 13. Swift 곡μ λ¬Έμ μ 리 - μλ μ°Έμ‘° μΉ΄μ΄ν (Automatic Reference Counting) μλ νμΈμ! μ€λμ Swiftμ 'μλ μ°Έμ‘° μΉ΄μ΄ν (Automatic Reference Counting, ARC)'μ λν΄ μμλ³΄κ² μ΅λλ€. λ©λͺ¨λ¦¬ κ΄λ¦¬λ μ± μ±λ₯κ³Ό μμ μ±μ μ§κ²°λλ μ€μν μ£Όμ μΈλ°μ, Swiftμ ARCλ₯Ό μ΄ν΄νλ©΄ λ©λͺ¨λ¦¬ λμ μλ ν¨μ¨μ μΈ μ±μ κ°λ°ν μ μμ΅λλ€.π ARCλ 무μμΈκ°?μλ μ°Έμ‘° μΉ΄μ΄ν (ARC)μ Swiftμμ λ©λͺ¨λ¦¬ μ¬μ©λμ μλμΌλ‘ μΆμ νκ³ κ΄λ¦¬νλ μμ€ν μ λλ€. ARCλ ν΄λμ€ μΈμ€ν΄μ€κ° λ μ΄μ νμνμ§ μμ λ μλμΌλ‘ λ©λͺ¨λ¦¬λ₯Ό ν΄μ ν©λλ€.λλΆλΆμ κ²½μ° λ©λͺ¨λ¦¬ κ΄λ¦¬λ "κ·Έλ₯ λμνλ" λ°©μμΌλ‘, κ°λ°μκ° νΉλ³ν μ κ²½ μΈ νμκ° μμ΅λλ€. νμ§λ§ νΉμ μν©μμλ μ½λμ κ°μ²΄ κ° κ΄κ³μ λν΄ ARCμ μΆκ° μ 보λ₯Ό μ 곡ν΄μΌ ν νμκ° μμ΅λλ€.μ€μ: ARCλ ν΄λ.. 2025. 4. 13. Swift 곡μ λ¬Έμ μ 리 - λΆν¬λͺ ν νμ (Opaque Types) μλ νμΈμ. μ€λμ Swiftμ 'λΆν¬λͺ νμ (Opaque Types)'μ λν΄ μμλ³΄κ² μ΅λλ€. λΆν¬λͺ νμ μ κ°μ ꡬ체μ μΈ νμ μ 보λ₯Ό μ¨κΈ°λ©΄μλ νμ μμ μ±μ μ μ§νλ λꡬμ λλ€.π λΆν¬λͺ νμ μ΄ ν΄κ²°νλ λ¬Έμ λ¨Όμ λΆν¬λͺ νμ μ΄ νμν μ΄μ μ ν΄κ²°νλ λ¬Έμ λ₯Ό μ΄ν΄ν΄λ³΄κ² μ΅λλ€. λ€μκ³Ό κ°μ΄ ASCII λ¬Έμλ‘ λνμ 그리λ κ°λ¨ν μμ λ₯Ό μ΄ν΄λ΄ μλ€:protocol Shape { func draw() -> String}struct Triangle: Shape { var size: Int func draw() -> String { var result: [String] = [] for length in 1...size { result.append(.. 2025. 4. 13. Swift 곡μ λ¬Έμ μ 리 - μ λλ¦ (Generics) μλ νμΈμ. μ€λμ Swift 'μ λλ¦(Generics)'μ λν΄ μμλ³΄κ² μ΅λλ€.π μ λλ¦μ΄λ? κ·Έλ¦¬κ³ μ νμν κΉμ?μ λλ¦ μ½λλ νΉμ νμ μ ꡬμ λ°μ§ μκ³ , μ μν μꡬμ¬νμ μΆ©μ‘±νλ λͺ¨λ νμ μ λν΄ λμν μ μλ μ μ°ν μ½λλ₯Ό μμ±ν μ μκ² ν΄μ€λλ€. Swiftμ Array, Dictionaryμ κ°μ νμ€ λΌμ΄λΈλ¬λ¦¬μ λλΆλΆμ μ λλ¦μΌλ‘ ꡬνλμ΄ μμ΅λλ€.μ λλ¦μ΄ ν΄κ²°νλ λ¬Έμ μλ μμ λ₯Ό ν΅ν΄ μ λλ¦μ νμμ±μ μ΄ν΄λ³΄κ² μ΅λλ€:func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA}μ΄ ν¨μλ λ μ μμ κ°μ κ΅ννλ κ°λ¨ν ν¨μμ λλ€. κ·Έλ¬λ λ§μ½ λ¬Έμμ΄μ΄λ μ€μ κ°μ .. 2025. 4. 13. Swift 곡μ λ¬Έμ μ 리 - νλ‘ν μ½ (Protocols) μλ νμΈμ. μ€λμ Swiftμ 'νλ‘ν μ½(Protocols)'μ λν΄ μμλ³΄κ² μ΅λλ€.π νλ‘ν μ½μ΄λ?νλ‘ν μ½μ νΉμ μμ μ΄λ κΈ°λ₯μ νμν λ©μλ, νλ‘νΌν°, κΈ°ν μꡬμ¬νμ μ²μ¬μ§μ μ μν©λλ€. ν΄λμ€, ꡬ쑰체, μ΄κ±°νμ μ΄λ¬ν νλ‘ν μ½μ 'μ±ν(adopt)'νμ¬ μꡬμ¬νμ 'μ€μ(conform)'ν μ μμ΅λλ€.νλ‘ν μ½μ 무μμ ν΄μΌ νλμ§λ§ μ μνκ³ , μ΄λ»κ² ꡬνν΄μΌ νλμ§λ κ° νμ μ λ§‘κΉλλ€. μ΄λ₯Ό ν΅ν΄ μλ‘ λ€λ₯Έ νμ λ€μ΄ 곡ν΅λ κΈ°λ₯μ μ 곡νλ©΄μλ κ°μμ, μ΄λ₯Ό μ μ°νκ² κ΅¬νν μ μλ λ€νμ±μ μ 곡ν©λλ€.π νλ‘ν μ½ κ΅¬λ¬Έ (Protocol Syntax)νλ‘ν μ½μ λ€μκ³Ό κ°μ΄ μ μν©λλ€:protocol SomeProtocol { // νλ‘ν μ½ μꡬμ¬ν μ μ}νμ μ΄ νλ‘ν μ½μ μ±νν .. 2025. 4. 13. Swift 곡μ λ¬Έμ μ 리 - νμ₯ (Extensions) μλ νμΈμ. μ€λμ Swiftμ 'νμ₯(Extensions)'μ λν΄ μμλ³΄κ² μ΅λλ€. νμ₯μ μ¬μ©νλ©΄ κΈ°μ‘΄ νμ μ μλ‘μ΄ κΈ°λ₯μ μ½κ² μΆκ°ν μ μμ΄, μ½λμ μ¬μ¬μ©μ±κ³Ό μ μ°μ±μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.π νμ₯μ΄λ?νμ₯(Extensions)μ κΈ°μ‘΄μ ν΄λμ€, ꡬ쑰체, μ΄κ±°ν, νλ‘ν μ½μ μλ‘μ΄ κΈ°λ₯μ μΆκ°νλ λ°©λ²μ λλ€. μ¬μ§μ΄ μμ€ μ½λμ μ κ·Όν μ μλ νμ λ νμ₯ν μ μλ€λ μ μ΄ ν° μ₯μ μ λλ€. μ΄λ₯Ό 'μκΈ λͺ¨λΈλ§(retroactive modeling)'μ΄λΌκ³ ν©λλ€.μ°Έκ³ : Swiftμ νμ₯μ Objective-Cμ μΉ΄ν κ³ λ¦¬μ μ μ¬νμ§λ§, Swift νμ₯μ μ΄λ¦μ΄ μλ€λ μ°¨μ΄κ° μμ΅λλ€.π νμ₯μΌλ‘ ν μ μλ κ²Swiftμμ νμ₯μ ν΅ν΄ λ€μκ³Ό κ°μ κΈ°λ₯μ μΆκ°ν μ μμ΅λλ€:κ³μ°λ νλ‘.. 2025. 4. 13. Swift 곡μ λ¬Έμ μ 리 - μ€μ²©λ νμ (Nested Types) μλ νμΈμ. μ€λμ Swiftμ 'μ€μ²© νμ (Nested Types)'μ λν΄ μμλ³΄κ² μ΅λλ€. μ€μ²© νμ μ ν¨κ³Όμ μΌλ‘ νμ©νλ©΄ μ½λμ ꡬ쑰μ κ°λ μ±μ ν₯μμν¬ μ μμ΅λλ€.π μ€μ²© νμ μ΄λ?μ€μ²© νμ (Nested Types)μ λ€λ₯Έ νμ (ν΄λμ€, ꡬ쑰체, μ΄κ±°ν) λ΄λΆμ μ μλ νμ μ λ§ν©λλ€. μ΄λ νΉμ νμ κ³Ό λ°μ νκ² μ°κ΄λ 보쑰 νμ μ λ Όλ¦¬μ μΌλ‘ κ·Έλ£Ήννλ λ° μ μ©ν©λλ€.struct OuterType { // μ€μ²©λ μ΄κ±°ν enum NestedEnum { // μ΄κ±°ν λ΄μ© } // μ€μ²©λ ꡬ쑰체 struct NestedStruct { // ꡬ쑰체 λ΄μ© } // μ€μ²©λ ν΄λμ€ class NestedClass { .. 2025. 4. 12. Swift 곡μ λ¬Έμ μ 리 - νμ μΊμ€ν (Type Casting) μλ νμΈμ. μ€λμ Swiftμμ 'νμ μΊμ€ν (Type Casting)'μ λν΄ μμλ³΄κ² μ΅λλ€. νμ μΊμ€ν μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μ μ°μ±κ³Ό λ€νμ±μ ꡬννλ κΈ°μ λ‘, Swiftμ νμ μμ μ±μ μ μ§νλ©΄μλ λ€μν νμ κ°μ μνΈμμ©μ κ°λ₯νκ² ν©λλ€.π νμ μΊμ€ν μ΄λ?νμ μΊμ€ν μ μΈμ€ν΄μ€μ νμ μ νμΈνκ±°λ, ν΄λΉ μΈμ€ν΄μ€λ₯Ό ν΄λμ€ κ³μΈ΅ ꡬ쑰 λ΄μ λ€λ₯Έ νμ μΌλ‘ μ·¨κΈνλ λ°©λ²μ λλ€. Swiftμμλ isμ as μ°μ°μλ₯Ό ν΅ν΄ νμ μΊμ€ν μ ꡬνν©λλ€.is μ°μ°μ: μΈμ€ν΄μ€κ° νΉμ νμ μΈμ§ νμΈ(νμ 체ν¬)as μ°μ°μ: μΈμ€ν΄μ€λ₯Ό λ€λ₯Έ νμ μΌλ‘ λ³ν(νμ λ³ν)μ΄λ₯Ό ν΅ν΄ ν΄λμ€ κ³μΈ΅ ꡬ쑰λΏλ§ μλλΌ νλ‘ν μ½ μ€μ μ¬λΆλ νμΈν μ μμ΅λλ€.π νμ μΊμ€ν μ μν ν΄λμ€ κ³μΈ΅ ꡬ쑰νμ μΊμ€ν μ.. 2025. 4. 12. μ΄μ 1 2 3 4 λ€μ