[Swift] 프로퍼티(Property) - 1
·
Swift/개념 & 응용
프로퍼티(Property) property는 value를 특정 클래스, 구조체, 열거형과 연결하는 역할을 합니다. 말은 어렵지만 클래스, 구조체, 열거형에서 값을 쓸 수 있도록 해주는게 property라는거에요. var hello: String = "Hello" 이 코드도 property를 나타낸건데 hello는 property 이름, String은 타입, "Hello"는 값입니다. "Hello"를 쓰기 위해서는 hello를 이용해야 하죠. Property에는 크게 4가지가 존재합니다. 저장 프로퍼티(Stored Property) 지연 저장 프로퍼티(Lazy Stored Property) 연산 프로퍼티(Computed Property) 프로퍼티 옵저버(Property Observers) 타입 프로퍼티(T..
[Swift] Value 타입과 메모리 저장 공간
·
Swift/개념 & 응용
서론 지난 포스팅에서 Class와 Struct의 차이점을 다루며 Reference 타입과 Value 타입에 대해 다루었습니다. [Swift] Class와 Struct Class와 Struct 새로운 데이터 구조를 정의할 때 구조체와 클래스 중에 무엇을 사용할지 고민합니다. 클래스와 구조체의 차이에 대해 알아보고 어떤 상황에서 무엇을 쓰면 좋을지 알아보겠습니다. jeong9216.tistory.com Reference 타입과 Value 타입의 차이 중 하나가 저장되는 메모리 공간인데요. Reference 타입은 Heap, Value 타입은 Stack에 저장된다고 설명했고, 그렇게 알고 있는 분이 많으실 겁니다. 하지만 타입에 따른 저장 공간이 상황에 따라 달라질 수 있다는 거 아시나요? 오늘은 Value ..
[Swift] 함수(function)와 메서드(method) 차이
·
Swift/개념 & 응용
포스팅을 쓰다보니 메서드와 함수 중 어떤 단어가 맞는지 정확히 모르겠어서 이 기회에 정리를 한 번 해봅니다 ㅎㅎ 함수(function) 함수는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미합니다. 같은 함수를 여러 상황에서 여러 차례 호출할 수 있으며 일부분을 수정하기 쉽다는 것이 특징입니다. 전역이든 지역이든 상관 없이 독립된 기능을 수행하면 함수라고 합니다. hello 라는 이름의 함수를 정의하고 호출하여 실행한 모습입니다. 독립적으로 존재하면서 hello 라는 문자열을 출력하는 동작을 수행하니 함수의 정의에 부합하죠? 메서드(method) 메서드(method)는 클래스, 구조체, 열거형에 포함되어 있는 함수입니다. 즉 메서드도 함수의 일종이라는 것입니다. 근데 iOS 포스팅을 할 때는 ..
[Swift] escaping과 [weak self]
·
Swift/개념 & 응용
서론 @escaping 키워드가 붙은 클로저를 본 적이 있으실 겁니다. func withEscaping(completion: @escaping () -> Void) { completion() } 가장 대표적인 예는 completionHandler가 있습니다. escaping 클로저는 non-escaping 클로저와 달리 아래 동작이 가능합니다. 파라미터로 전달된 클로저를 외부 변수/상수에 저장 가능 함수가 종료된 뒤 실행 가능 오늘 포스팅에서는 escaping에 대해 자세히 알아봅시다. non-escaping 클로저 escaping 클로저에 대해 자세히 알아보기 전에 non-escaping 클로저에 대해 알아봅시다. @escaping 이 붙지 않은 클로저는 모두 non-escaping 클로저인데요. 무슨..
[Swift] Class와 Struct
·
Swift/개념 & 응용
Class와 Struct 새로운 데이터 구조를 정의할 때 구조체와 클래스 중에 무엇을 사용할지 고민합니다. 클래스와 구조체의 차이에 대해 알아보고 어떤 상황에서 무엇을 쓰면 좋을지 알아보겠습니다. 공통점 Swift에서 Class와 Struct는 공통점이 꽤 많습니다. property와 메서드를 정의할 수 있고 init 함수를 통해 초기화할 수 있습니다. 또한, 둘 다 extension을 통해 기능을 확장할 수 있으며 protocol 채택도 할 수 있습니다. 이러한 공통점 덕에 구조체와 클래스 중 무엇을 사용해도 어느정도 구현은 할 수 있죠. 하지만 최적화된 구현을 하기 위해서는 차이점을 파악하여 적절한 선택을 해야합니다. 지금부터는 차이점에 대해 알아봅시다. 타입 종류 클래스는 참조(reference) ..
[Swift] ContiguousArray와 ArraySlice
·
Swift/개념 & 응용
서론 Swift의 Array는 이미 훌륭하지만 더 최적화를 시킬 수 있는 방법이 있다는 것을 알고 계시나요? 오늘 알아볼 ContiguousArray와 ArraySlice를 이용해 최적화할 수 있는 상황이 있습니다. 오늘은 그 상황과 방법을 알아보도록 합시다. ContiguousArray ContiguousArray는 항상 배열 요소를 인접한 메모리 영역에 저장합니다. 쉽게 말해 항상 연속적인 저장을 보장 받습니다. 그건 배열도 똑같은거 아니야? 라고 생각할 수 있겠지만 Swift의 Array는 Element가 클래스 타입이거나 @objc 프로토콜 타입인 경우 메모리에 연속적으로 저장되지 않습니다. 왜냐하면 NSArray 저장소에 백업이 될 가능성이 있기 때문입니다. 그래서 Array는 Element가 ..
[Swift] Identifiable
·
Swift/개념 & 응용
Identifiable란? Identifiable란 인스턴스의 유일성을 위해 ID 설정을 강제하는 프로토콜입니다. 예를 들어, 성별, 키, 외모 등 모든 것이 완벽하게 동일한 쌍둥이가 있다고 합시다. Equtable의 관점에서 보면 이 둘은 모든 값이 같기 때문에 동일한 사람입니다. 하지만 Identifiable 프로토콜은 이 둘에게 서로 다른 주민등록번호를 제공해서 다른 사람으로 구분합니다. 주민등록번호가 바로 ID 역할을 하는 것이죠. Identifiable의 코드 부분입니다. 유일성을 보장하기 위해 Hashable 프로토콜을 채택하고 있습니다. ID는 아래와 같은 특성을 갖습니다. UUID와 같이 항상 고유하게 보장됩니다. 환경마다 지속적으로 고유합니다. 프로세스의 수명 동안 고유합니다. 개체의 수..
[Swift] Equatable
·
Swift/개념 & 응용
서론 Equatable과 Identifiable은 비슷하지만 다른 개념입니다. 공식문서에서도 See Also로 Identifiable를 봐보라고 알려주네요. 이 둘에 대해서 처음 들어보신 분도, 익숙하신 분도 계실텐데요. 이번 포스팅에서는 Equatable가 무엇인지 알아보겠습니다. 다음 포스팅에서는 Identifiable에 대해 알아볼 예정이에요! Equatable Equatable에 대해 알아봅시다. Equatable은 프로토콜 중 하나로 값이 같은지 비교할 수 있는 타입입니다. 용어가 낯설다고 생각하시는 분들은 아래 사진을 봐주세요. 개발자라면 낯설 수가 없는 이 부호가 사실 Equatable의 필요 조건이었습니다. 즉, Equatable을 준수하기 위해서는 == 연산자를 통해 "같다"를 정의해야 ..
[Swift] ARC 정리 & 실습해보기
·
Swift/개념 & 응용
안녕하세요. 개발하는 정주입니다. 오늘은 "ARC"에 대해 알아보겠습니다. ARC의 개념은 공식 문서가 최고라고 생각하기 때문에 공식 문서 번역으로 진행했습니다. 이번 포스팅에서는 간단한 개념 정리 후 실습을 해보겠습니다. 틀린 내용이 있을 때 댓글로 알려주시면 정말 감사하겠습니다. ARC 공식 문서 번역 보러 가기 [Swift] 공식 문서 - Automatic Reference Counting(ARC) 안녕하세요. 개발하는 정주입니다. 오늘은 "Automatic Reference Counting"를 정리해보겠습니다. * 완벽한 번역이 아닌 내용을 한 줄 한 줄 읽는 것에 의의를 두었습니다. * 파파고의 힘을 빌려 번역했으 jeong9216.tistory.com ARC란? ARC란 Automatic Re..
[Swift] Swift 5.7 변경점 간단 정리
·
Swift/개념 & 응용
안녕하세요. 개발하는 정주입니다. 오늘은 "Swift 5.7 변경점"에 대해 알아보겠습니다. 간단히 소개하는 정도의 포스팅이 되겠습니다. Swift 문서 업데이트 WWDC22에서 Swift 5.7이 소개되었습니다. Xcode 14.0 베타 버전을 설치하면 Swift 5.7을 사용할 수 있습니다. Document Revision History — The Swift Programming Language (Swift 5.7) Beta Software This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software ..
유정주
'Swift/개념 & 응용' 카테고리의 글 목록 (7 Page)