본문 바로가기

프로그래밍/Swift25

[Swift] Memory Safety References https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html Contents Conflict Access 특징 Conflicting Access of In-Out Parameters Conflicting Access to self in Methods Conflicting Access to Properties 기본적으로 Swift는 코드에서 unsafe한 동작이 발생하지 않도록 방지합니다. 예를 들어, 변수가 사용되기 전에 초기화되도록 보장하며, 해제된 이후에는 메모리에 액세스할 수 없도록 보장합니다. 배열의 경우에는 경계 에러를 체크합니다. 또한 메모리의 어느 공간을 수정하는 코드가 그 메모리의 소유권을 가지도록 요구함으로써 동.. 2022. 3. 11.
[Swift] Automatic Reference Counting (ARC) References https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html Contents Automatic Reference Counting Strong References Strong Reference Cycles Weak References Unowned References Unowned Optional References Strong Reference Cycles for Closures Swift는 Automatic Reference Counting(자동참조카운팅, ARC)를 사용해서 앱의 메모리 사용을 추적하고 관리합니다. 대부분의 경우, Swift 내에서 메모리 관리는 알아서 동작하고, 우리는 메모리 관리에.. 2022. 3. 10.
[Swift] Opaque Types References https://docs.swift.org/swift-book/LanguageGuide/OpaqueTypes.html Contents Opaque Types (불분명한 타입) Opaque 리턴 타입을 갖는 함수나 메소드는 리턴 값의 타입 정보를 숨깁니다. 함수의 리턴 타입으로 구체적인 타입을 제공하는 대신, 리턴 타입은 프로토콜이 제공하는 것으로 묘사될 수 있습니다. 리턴 값의 내부 타입이 private으로 남아있을 수 있기 때문에 타입 정보를 숨기는 것은 모듈과 모듈을 호출하는 코드 사이의 경계(boundaries)에서 유용합니다. 타입이 프로토콜인 값을 리턴하는 것과는 달리, opaque 타입은 타입 identity를 유지합니다. 따라서 컴파일러는 타입 정보에 액세스할 수 있지만, .. 2022. 3. 9.
[Swift] Error Handling References https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html Contents Representing and Throwing Erros Handling Errors Specifying Cleanup Actions Error Handling은 프로그램에서 에러 조건들에 대해 대응하고 회복하는 프로세스입니다. Swift는 런타임에서 에러가 발생한 경우 해당 에러를 처리하기 위해 throwing, catching, propagting, manipulating을 지원하는 일급 클래스(first-class)를 제공합니다. 어떠한 명령은 항상 실행을 완료하거나 유용한 결과를 생성한다고 보장하지 않습니다. 옵셔널은 값이 존재하지 않음을 표현.. 2022. 3. 8.
[Swift] Generics (제네릭) References https://docs.swift.org/swift-book/LanguageGuide/Generics.html Contents Generics Functions Type Parameter Associated Type Generic Where Clause Generic Subscripts Generic code(제네릭 코드)는 요구 사항에 따라 모든 타입에서 동작할 수 있는 더 유연하고 재사용 가능한 함수와 타입을 작성할 수 있도록 해줍니다. 제네릭 코드를 사용하면 중복을 피할 수 있으며 명확하고 추상적인 방법으로 그 의도를 표현할 수 있는 코드를 작성할 수 있습니다. 제네릭은 Swift에서 가장 강력한 기능 중 하나이며, 대부분의 Swift 표준 라이브러리는 제네릭 코드로 빌드됩니다... 2022. 3. 7.
[Swift] Protocols (2) References https://docs.swift.org/swift-book/LanguageGuide/Protocols.html Contents Adding Protocol Conformance with an Extension Adopting a Protocol Using a Synthesized Implementation Collections of Protocol Types Protocol Inheritance Class-Only Protocols Protocol Composition Checking for Protocol Conformance Optional Protocol Requirements Protocol Extensions 이전 포스팅에 이어서 계속해서 프로토콜에 대해 알아보도록 하겠습니.. 2022. 2. 5.
[Swift] Protocols (1) References https://docs.swift.org/swift-book/LanguageGuide/Protocols.html Contents Protocol Syntax Property Requirements Method Requirements Mutating Method Requirements Initializer Requirements Protocols as Types Delegation Protocols 프로토콜(protocol)은 메소드(methods)와 속성(properties), 그리고 특정 태스크나 일부 기능에 적합한 다른 요구사항들의 청사진(blueprint)를 정의합니다. 프로토콜은 요구사항들이 실제로 구현되는 클래스, 구조체, 또는 열거형에서 채택될 수 있습니다. 프로토콜의 요구.. 2022. 2. 5.
[Swift] Extensions Refences https://docs.swift.org/swift-book/LanguageGuide/Extensions.html Contents Extension Syntax Computed Properties Initializers Methods Subscripts Nested Types Extensions 익스텐션(extension)을 사용하면 이미 정의된 클래스(class), 구조체(structure), 열거형(enumeration), 또는 프로토콜(protocol) 타입에 새로운 기능을 추가할 수 있습니다. 이는 원본 코드를 건들이지 않고 타입을 확장할 수 있는 기능이며, retroactive modeling이라고 합니다. (익스텐션은 Objective-C의 카테고리와 유사하다고 합니다.) 익스.. 2022. 2. 3.
[Swift] Type Casting References https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html Contents Defining a Class Hierarchy for Type Casting Checking Type Downcasting Type Casting for Any and Any Object Type casting(타입 캐스팅)은 인스턴스의 타입을 체크하거나 해당 인스턴스를 인스턴스 자신의 클래스 계층에서 다른 수퍼클래스 또는 서브클래스로 처리하는 방법입니다. Swift에서 타입 캐스팅은 is와 as 오퍼레이터로 구현됩니다. 이 두 오퍼레이터는 값의 타입을 체크하거나 다른 타입으로 그 값을 캐스팅하는 간단하게 효과적인 방법을 제공합니다. Defining a.. 2022. 1. 29.
[Swift] Optional Chaining References https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html Contents Optional Chaining as an Atlternative to Forced Unwrapping Defining Model Classes for Optional Chaining Accessing Properties Through Optional Chaining Linking Multiple Levels of Chaining Chaining on Methods with Optional Return Values Optional Chaning은 현재 'nil'일 수도 있는 optional properties/methods/subscripts를 .. 2022. 1. 8.