[Swift] Value 타입과 메모리 저장 공간
·
Swift/개념 & 응용
서론 지난 포스팅에서 Class와 Struct의 차이점을 다루며 Reference 타입과 Value 타입에 대해 다루었습니다. [Swift] Class와 Struct Class와 Struct 새로운 데이터 구조를 정의할 때 구조체와 클래스 중에 무엇을 사용할지 고민합니다. 클래스와 구조체의 차이에 대해 알아보고 어떤 상황에서 무엇을 쓰면 좋을지 알아보겠습니다. jeong9216.tistory.com Reference 타입과 Value 타입의 차이 중 하나가 저장되는 메모리 공간인데요. Reference 타입은 Heap, Value 타입은 Stack에 저장된다고 설명했고, 그렇게 알고 있는 분이 많으실 겁니다. 하지만 타입에 따른 저장 공간이 상황에 따라 달라질 수 있다는 거 아시나요? 오늘은 Value ..
[iOS] viewWillLayoutSubviews와 viewDidLayoutSubviews
·
iOS/개념 & 개발
선행 내용 아래 포스팅을 먼저 보고 오시면 좋습니다 ViewController의 Lifecycle을 다룬 내용입니다. [iOS] UIViewController 생명주기(Life Cycle) 알아보기 안녕하세요. 개발하는 정주입니다. 오늘은 "UIViewController 생명주기(Life Cycle)"에 대해 알아보겠습니다. 마지막에는 프로젝트를 생성해 생명주기 메서드 호출을 알아보겠습니다. 생명주기 흐름 jeong9216.tistory.com Layout 관련된 생명 주기 viewWillAppear()와 viewDidAppear() 사이에 레이아웃이 결정되기 전, 후의 생명 주기 메서드가 있습니다. 바로 viewWillLayoutSubviews()와 viewDidLayoutSubview() 입니다. 뷰..
[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을 준수하기 위해서는 == 연산자를 통해 "같다"를 정의해야 ..
[iOS] URL Loading System
·
iOS/개념 & 개발
URLSession을 공부하기 전 The URLSession API involves many different classes that work together in a fairly complex way which may not be obvious if you read the reference documentation by itself. Before using the API, read the overview in the URL Loading System topic. The articles in the Essentials, Uploading, and Downloading sections offer examples of performing common tasks with URLSession. URLSessio..
[Swift 알고리즘] 백준 BOJ - 2636 치즈
·
코딩테스트
Github GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘 스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub. github.com 문제 링크 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 풀이 이번 문제는 BFS 문제입니다. 가장자리의 치즈는 1시간이 지나면 녹습니다. 모든 치즈가 녹는데 소요되는 시간과 모두 녹기 직전 남은 치즈의 수를 출력해야 합니다. while t..
[iOS] 앱의 생명 주기(Life Cycle)
·
iOS/개념 & 개발
앱의 생명 주기 앱이 최초 실행될 때부터 앱이 종료될 때까지 앱은 여러 상태를 가집니다. 많이 들어보셨을 background, foreground도 앱의 생명 주기 중 하나이죠. 참고로 앱의 생명 주기는 공식 문서에 너무 자세히, 정확하게 서술되어 있습니다. 해당 포스팅과는 별개로 공식 문서는 꼭 읽어보시길 권장드립니다. Apple Developer Documentation developer.apple.com 앱의 생명 주기는 왜 알아야 할까? 앱의 상태는 현재 수행 가능한 동작과 수행 불가능한 동작을 결정짓습니다. Foreground 상태인 앱은 화면을 점유하고 있기 때문에 시스템 리소스보다 높은 우선순위를 가지고 있습니다. Background 상태인 앱은 최소한의 작업을 수행해야 합니다. 앱의 상태에..
[iOS] autoreleasepool
·
iOS/개념 & 개발
안녕하세요. 개발하는 정주입니다. 오늘은 "autoreleasepool"에 대해 알아보겠습니다. autoreleasepool의 개념이 낯설 수 있는데요. ARC와 메모리 관리에 대한 개념이 어느정도 있어야 이해하기 편하실 겁니다. ARC 포스팅 보러 가기 [Swift] ARC 정리 & 실습해보기 안녕하세요. 개발하는 정주입니다. 오늘은 "ARC"에 대해 알아보겠습니다. ARC의 개념은 공식 문서가 최고라고 생각하기 때문에 공식 문서 번역으로 진행했습니다. 이번 포스팅에서는 간단한 개념 jeong9216.tistory.com 메모리 관리 개념 살펴보기 About Memory Management About Memory Management Application memory management is the pr..
[iOS] 프레임워크(Framework)와 라이브러리(Library)
·
iOS/개념 & 개발
안녕하세요. 개발하는 정주입니다. 오늘은 "프레임워크(Framework)와 라이브러리(Library)"에 대해 알아보겠습니다. 익숙한 개념이라 잘 알고 있다고 생각했는데 착각이었더라고요. 프레임워크와 라이브러리가 무엇인지 정확히 알아봅시다. 마지막에는 프레임워크와 라이브러리의 차이점에 대해서도 알아보겠습니다. 프레임워크(Framework) 프레임워크에 대해 먼저 알아봅시다. 프레임워크 개념 software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-sp..
[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 ..
[iOS] UIViewController 생명주기(Life Cycle) 알아보기
·
iOS/개념 & 개발
안녕하세요. 개발하는 정주입니다. 오늘은 "UIViewController 생명주기(Life Cycle)"에 대해 알아보겠습니다. 마지막에는 프로젝트를 생성해 생명주기 메서드 호출을 알아보겠습니다. 생명주기 흐름도 생명주기 흐름도를 먼저 보도록 하겠습니다. UIViewController의 생명주기는 위 흐름도대로 진행됩니다. 메서드 이름에 view가 들어간 것은 진하게 표시하였습니다. 하나하나 살펴보도록 합시다. 0. init init 과정은 storyboard나 코드로 view controller를 생성하는 과정입니다. UIViewController의 생명주기로 말하기엔 애매하고 생명주기에 들어서기 전 단계가 더 정확하겠네요. 1. loadView loadView는 컨트롤러가 관리하는 view를 생성하고..
유정주
'SWIFT' 태그의 글 목록 (13 Page)