ios 31

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

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

Swift 2023.11.09

[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] 메모리 관리 (1) | ARC와 메모리 누수 (feat.강한순환참조)

Swift 메모리에 대해서 공부를 하다 보면 자연스레 ARC라는 단어가 익숙해지게 되죠. 메모리 관리는 왜 필요한지, ARC 시스템은 어떤 원리인지와 메모리 누수가 일어나는 상황에 대해서 정리해 보면 어느 정도개념이 잡힐 것 같으니 정리해 봅시다! [Swift] 메모리 관리 (1) | ARC와 메모리 누수 (feat.강한순환참조) [Swift] 메모리 관리 (2) | 약한참조 WeakReference와 비소유참조 UnownedReference # 🥨 메모리 관리가 필요한 타입 우리가 흔히 알고 있는 타입 중에 값 형식의 인스턴스 은 메모리 관리가 필요하지 않고 참조 형식, 즉, 우리가 흔히 아는 클래스, 클로저 등의 인스턴스에 대해서는 메모리 관리가 필요하다. 왜일까? 내가 아는 선에서 내용을 공유하자면..

Swift 2023.10.16

[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 (2) FCM 서비스 사용하여 원격 알림 구현

이전에 작성했던 원격 알림에 대한 글을 바탕으로 FCM 서비스를 통해 원하는 알림을 기기로 전달하는 과정을 구현해보고자 한다. Local Notification 과 Remote Notification의 기본 동작 방식과 개념에 대해서는 이전 블로그 글을 읽어보는 것을 추천한다. 알림 관련 이전 글 [SwiftUI] Local Notification 앱의 로컬알림 기능 구현 [SwiftUI] Notification | 알림설정확인 getNotificationSettings Provisional Authorization [SwiftUI] Remote Notification 원격 알림 (1) #🥨 왜 FCM 을 사용하는가? 앱에서 알림 기능을 구현할 때 FCM을 사용하는 이유는 다음과 같다. 1. 크로스 플랫..

SwiftUI 2023.08.22

[SwiftUI] Notification | 알림설정확인 getNotificationSettings Provisional Authorization

로컬 알림을 구현하는 것 이외에 푸시 알림에 관한 몇 가지 개념을 알아보고자 한다. 앱 푸시 설정상태를 확인하거나 사용자가 알림 권한에 대한 선택을 하기 전에 임시적으로 알림을 보내어 계속 알림을 유지할지 등의 코드를 구현해 볼 수 있다. 실질적으로 로컬 알림을 구현하는 방법이 궁금하다면 이전글을참고하길 바란다. 이전 글 : [SwiftUI] Local Notification 앱의 로컬알림 기능 구현 # 🥨 현재 앱의 알림 관련 설정 상태 확인하는 방법 사용자에게 알림을 보내는 기능을 포함하고 있는 경우 앱의 알림 관련 설정 상태를 확인해야 할 때가 있을 수 있다. 이렇게 사용자의 앱 푸시 설정 상태를 확인하고 싶을 때 우리는 UNUserNotificationCenter.current() 인스턴스의 ge..

SwiftUI 2023.07.26

[SwiftUI] Local Notification 앱의 로컬알림 기능 구현

로컬 알림에 대해 이해하고 구현하기 위해서는 먼저 우리가 푸시 알림이라고 부르는 local notification과 remote notification의 차이점에 대해 알아볼 필요가 있다. remote notification는 서버 측에서 보내는 서버 푸시이며 기기 자체에서 앱으로 알림을 보내는 것은 local notification이다. 두 케이스는 각기 다르지만 local notification는 서버가 없어도 앱 자체만으로 해결이 가능하기 때문에 구현하기 비교적 간단하다. 이 글에서는 Local Notification을 구현하기 위한 과정을 각각 설명하고자 한다. #🥨 사용자로부터 푸시알림 사용 권한 요청 앱에서 알림 기능을 사용자에게 제공하기 위해서는 가장 먼저 사용자가 알림을 받고 싶은지의 여부..

SwiftUI 2023.07.17