Swift 43

[swift] 제어 전송문 정리 | fallthrough continue break return throw

swift 기본 문법에 등장하는 개념인 제어 전송문에 대해 한번쯤 정리할 필요가 있을 것 같아 써보는 글이다. 일단 fallthrough, continue, break, return, throw에 대한 걸 구체적으로 알기 전에 어디에서 사용되는 제어 전송문 키워드인지 살펴보자면, fallthrough는 switch문에서 사용하고 continue는 반복문에서, break는 switch문과 반복문 두 곳에서 모두, return은 함수, throw는 에러 발생 가능 함수에서 사용된다. # fallthrough fallthrough는 switch 문에서 사용하고 해당 case에 매칭됐다고 하더라도 (한 단계)다음 case로 내려가서 문장을 실행시킨다. switch a { case 1,2: print(a) cas..

Swift 2023.11.26

[Swift] 클로저와 중첩함수의 캡처 현상 (2) | 캡처리스트 클로저에서self키워드

이전 글에서 클로저의 간략한 내용과 캡처 현상이 일어나는 이유! 캡처 현상이 일어나는 상황들! 그리고 값 타입과 참조타입에 대해 캡처현상이 일어날 때 각각 어떻게 캡처하고 있는지에 대해 알아보았죠. [Swift] 클로저와 중첩함수의 캡처 현상 (1) [Swift] 클로저와 중첩함수의 캡처 현상 (2) | 캡처리스트 클로저에서self키워드 이번 글에서는 클로저에서 사용하는 캡처리스트에 대해서 알아볼 건데요! 캡처 리스트를 사용하면 클로저의 캡처현상에 대해 어떠한 변화가 생기는데 여기서도 값타입과 참조타입의 변화가 각각 다른데 이 부분이 흥미로웠어요. 그리고 우리는 보통 클로저를 객체 내에서 사용하게 되고 이때 "힙영역"에 저장된 클로저가 "힙영역"에 저장된 객체를 강한 참조 하게 되는 상황이 있는데요. 어..

Swift 2023.11.09

[Swift] 클로저와 중첩함수의 캡처 현상 (1)

Swift에서 일급객체라고 불리는 클로저의 메모리는 어디에 저장되는지 알고 있나요? 그리고 외부 변수가 클로저 내부에서 사용될 시, 함수와는 다르게 어떤 현상이 일어나는지는 알고 있나요? 이번 글에서는 클로저나 중첩함수가 할당된 변수가 실행될 때 캡처 현상이 일어나는 상황과 이유에 대해 정리해 보려 합니다! 다음글에서는 캡처 현상 때문에 외부 요인에 의해 내부에서 사용되는 외부 값이 변경되는 것을 방지하기 위해 어떤 방법을 쓸 수 있는지 방법을 이야기해 볼게요 ㅎㅎ [Swift] 클로저와 중첩함수의 캡처 현상 (1) [Swift] 클로저와 중첩함수의 캡처 현상 (2) | 캡처리스트 클로저에서self키워드 # 🍑 클로저란 무엇이고 왜 사용할까? 클로저는 "이름이없는(익명) 함수"라고 하죠. Swift에서 ..

Swift 2023.11.01

[Swift] 메모리 관리 (2) | 약한참조 WeakReference와 비소유참조 UnownedReference

앞선 글에서 Swift의 메모리 관리 시스템인 ARC에 대한 개념과 메모리 누수가 일어날 수 있는 상황인 강한 순환 참조에 대해서 간략하게 알아보았다. 그럼 이제 메모리 누수를 발생시키지 않을 수 있는 방법인 약한 참조 Weak Reference와 비소유참조 Unowned Reference에 대해 설명해 보겠다! [Swift] 메모리 관리 (1) | ARC와 메모리 누수 (feat.강한순환참조) [Swift] 메모리 관리 (2) | 약한참조 WeakReference와 비소유참조 UnownedReference # 🥨 약한 참조 우선 약한 참조(Weak Reference)와 비소유 참조(Unowned Reference)의 공통점은 가리키는 인스턴스의 ReferenceCount(RC) 숫자를 올라가지 않게 한..

Swift 2023.10.25

[Swift] Initialization (2) | 상속, 확장에서의 생성자

앞의 글에서 알아본 것처럼 생성자의 종류는 많습니다..!! 이번에는 상속의 경우에 지정생성자와 편의생성자가 어떻게 재정의 되는지와 확장의 경우에 생성자를 어떤 식으로 구현할 수 있는지에 대해서 정리해보려구 해요! [Swift] Initialization (1) | 생성자의 종류 : 지정생성자, 편의생성자, 필수생성자, 실패가능생성자 [Swift] Initialization (2) | 상속, 확장에서의 생성자 # 🥨 상속에서의 생성자 필요한 경우 우리는 상속을 종종하곤하는데 이때 메서드 등 여러 가지를 재정의(Override)하곤 하죠? 이것처럼 생성자도 재정의가 필요한데 이 과정이 좀 까다로울 수 있어서 한번 정리해 보려고요. 지정 생성자의 재정의 일단, 지정생성자는 서브클래스에서 재정의(override..

Swift 2023.10.10

[Swift] Initialization (1) | 생성자의 종류 : 지정생성자, 편의생성자, 필수생성자, 실패가능생성자

기본 생성자 외에 지정 생성자, 편의 생성자, 실패 가능 생성자, 필수 생성자, 멤버와이즈 생성자에 대해 알고 계신가요? 아니면 들어본 적이 있으신가요?? 저는 이번에 공부하면서 제대로 알게 되어서 한번 정리해 보려고요! 한 번도 편의 생성자나 실패 가능 생성자를 사용해서 코드를 짜본 적은 없지만 공부를 하면서 이런 다양한 생성자를 잘 활용하면 중복 코드 없이 가독성 있고 활용도 높은 타입을 만들 수 있겠다고 생각했어요. [Swift] Initialization (1) | 생성자의 종류 : 지정생성자, 편의생성자, 필수생성자, 실패가능생성자 [Swift] Initialization (2) | 상속, 확장에서의 생성자 # 🥨 생성자의 의미 일단, 우리가 클래스나 구조체를 만들 때 습관적(?)으로 구현했던 ..

Swift 2023.10.04

[Swift] switch-case 문에서의 where절과 unknown 키워드

swift에서 switch문은 if문처럼 조건문이며 조건이 만족했을 때 해당 case에서의 코드가 실행되는 것은 대부분 알고 있을 것이다. 하지만 switch문에서 우리가 흔히 사용하는 것처럼 값이 딱 일치하는 case로 분기하는 게 아니라 어떤 조건을 만족했는지에 대한 것을 case문으로 작성하고 만족했을 때 실행문으로 이동하도록 하는 방법은 무엇일까? 그리고 switch문의 마지막에는 보통 case로 분기처리한 케이스 외에 다른 경우의 수를 위해 default 블록를 추가하는데 default 블록만 추가한다고 분기처리가 안전하다고 볼 수 있을까? unknown 키워드는 언제 쓰일까? # 🥨 switch문에서의 바인딩과 where절 우리는 언제 switch문에서 바인딩과 where절을 사용할 수 있을까..

Swift 2023.09.27

[Swift] Class와 Struct : 메모리 저장 방식의 차이

Swift에서 클래스, 구조체에 대한 개념을 깊게 생각하지 않으면 그냥 인스턴스를 만들어내는 애.. 정도로 생각할 수 있다. 하지만, 메모리 구조적으로 보면 엄청난 차이가 존재하고 이전에 왜 안되지? 했던 부분들도 이해될 수 있기 때문에 정리해 본다. # 🥨 Class와 Struct의 공통점 차이점을 알기 위해서는 뭐든 먼저 공통점을 알아야겠죠? 클래스와 구조체는 다양한 형식의 데이터를 한번에 관리하는 타입, 즉, 흔히 비유하는 것처럼 붕어빵 틀로 볼 수 있는 것은 아마 모두 아실 것 같아요! 아래처럼 타입속성, 인스턴스 속성, 인스턴스 메서드는 물론이고 계산 속성, 계산 타입속성, 서브스크립트 등등을 관리할 수 있습니다! class someClass { static let a = "a" var b = ..

Swift 2023.09.24

[Swift] 배열에서 index 사용 | enumerated, indices

Swift를 처음 접했을 때, 자바스크립트처럼 배열을 forEach 혹은 for 문과 같은 반복문에 돌릴 때 인덱스값을 사용하고 싶었다. 그때 구글링해서 찾았던 방법이 enumerated() 메서드를 사용하여 리턴된 배열로 for문을 돌려서 튜플 형태의 요소를 뽑아서 .offset 값을 사용하는 것이었다. 지금 생각해보면 그 때 enumerated() 메서드로 반환되는 게 정확히 뭔지 튜플을 (index, element)과 같이 어떻게 분해해서 사용하는지 제대로 이해하지 못하고 그냥 사용했던 것 같아서 다시 한번 정리해 본다. # 🥨 enumerated() 일단 enumerated에 대한 공식문서에서의 정의는 아래와 같다. Returns a sequence of pairs (n, x), where n r..

Swift 2023.09.17

[SwiftUI] Remote Notification 원격 알림 (1)

이전 글에서 로컬 알림 기능이 어떻게 구현되는지와 기기에 설정된 앱의 알림 기능을 확인하는 방법에 대해서 알아보았다면, 이번에는 푸시 서버로부터 사용자의 기기까지 어떻게 원격 알림이 전달되는지에 대한 전반적 개념을 알아보고자 한다. [SwiftUI] Remote Notification 원격 알림 (1) [SwiftUI] Remote Notification (2) FCM 서비스 사용하여 원격 알림 구현 알림 관련 이전 글 [SwiftUI] Local Notification 앱의 로컬알림 기능 구현 [SwiftUI] Notification | 알림설정확인 getNotificationSettings Provisional Authorization # 🥨 원격 알림은 왜 필요할까? 제한된 기능만 수행할 수 있는 ..

SwiftUI 2023.08.20