분류 전체보기
-
TCA Tutorial 1, 2 - 상태관리와 비동기 처리 TCAswift 2025. 5. 14. 15:33
앱 개발의 사이즈가 커질때마다 상태 관리의 중요성을 실감하고 있습니다. 간단한 UI 상태만 다룰 때는 문제가 없지만, 입력 -> API 호출 -> 화면 전환 등 다양한 이벤트가 얽히면서 복잡도가 높아지기 시작하면 이게 어떤 코드였지 ? 하는 생각이 많아지는 것 같습니다. 이런 상황이 쌓이면 유지보수도 힘들어지고 앱의 데이터 흐름을 파악하기 어려워지죠.이런 문제를 해결하기 위해 UIKit 에서는 RxSwift를 SwiftUI 에서는 TCA가 자주 활용됩니다. 물론 채용 공고에서도 많은 비중을 차지하고 있죠. 이번 TCA 글에서는 TCA의 기본 튜토리얼을 따르며 왜 이렇게 최근 앱 개발환경에서 많이 사용하는지 개인적인 시선으로 풀어보려 합니다. 단방향 데이터 흐름 TCA는 단방향 데이터 흐름을 철저하게 지킵..
-
메모리 릭 방지 weak 가 정답일까 ? - WWDC ARC 2swift 2025. 5. 7. 01:12
지난 글 에선 ARC 의 기초 개념과 메모리 릭, 객체의 수명에 대해서 참조 카운트가 연산되는 과정을 다루었습니다. 이번 글 에선 단순히 Observed Lifetime 에 의존하는 안되는 이유에 대해서 알아보고 메모리 릭을 방지하는 방법에 대해서 알아보겠습니다. 2025.05.07 - [swift] - 보이는 객체 수명에 속지 말기 ! - WWDC ARCObserved Lifetime 에 의존할 시 생길 버그class Traveler { var name: String var account: Account?}class Account { weak var traveler: Traveler? var points: Int func printSummary() { print(..
-
보이는 객체 수명에 속지 말기 ! - WWDC ARC 1swift 2025. 5. 7. 00:57
WWDC21 - ARC Swift Swift 에서는 class 보단 struct, 즉 값 타입을 우선적으로 사용하라고 합니다. 저 역시 class는 데이터가 여기저기서 접근되기 쉬워서 조심히 사용해야한다. 정도의 개념으로만 이해하고 struct를 사용해왔는데요. 문득👉데이터의 참조 타입은 언제 위험해지는 걸까 ? 이 의문에 파고드니 이를 이해하려면 ARC(Automatic Reference Counting) 을 정확히 이해야한다는 것을 알게되었습니다. 그렇게 지금까진 그저 넘겼던 참조타입이 왜 위험한지, ARC 중심으로 WWDC 의 ARC를 해석하며 알아보겠습니다. Swift의 class는 참조 타입이며, 메모리는 ARC로 관리된다. 값 타입(Struct, enum)을 우선 사용하고, 참조타입..
-
SwiftUI - Property Wrapper 언제 써야할까 ?카테고리 없음 2025. 4. 22. 15:17
프로퍼티 래퍼란 ?Swift에서는 변수(property)에 부가적인 동작을 자동으로 추가할 수 있는 특수한 문법이 존재합니다.이것이 바로 프로퍼티 래퍼(Property Wrapper)입니다.보통 @로 시작하는 문법으로 작성되며, 값 저장, 읽기, 변경 감지 등의 기능을 캡슐화하여 간단하게 사용할 수 있도록 도와줍니다.SwiftUI에서는 이 기능을 활용해 @State, @Published, @AppStorage 등 다양한 상태 관리를 구현할 수 있습니다. SwiftUI 의 대표적인 Property Wrapper프로퍼티 래퍼 기능 요약@State값 상태 관리, 변경되면 뷰 업데이트@StateObject클래스 상태 생성 및 소유@ObservedObject외부에서 주입된 클래스 상태를 관찰@Binding부모의 ..
-
백준 4375 : 1. 모듈러 연산 2알고리즘/백준 2023. 8. 31. 01:49
2023.08.31 - [알고리즘/백준] - 백준 1629 곱셈 , 모듈러 연산 , 재귀함수 백준 1629 곱셈 , 모듈러 연산 , 재귀함수 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 모듈러 연산을 이용하는 문제이다. gadisom.tistory.com 모듈러 연산에 대한 기초 내용을 저번 포스트에서 다뤘는데요. 이번에는 더 심화로 백준 4375를 풀어보겠습니다. https://www.acmicpc.net/problem/4375 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10..
-
백준 1629 곱셈 , 모듈러 연산 , 재귀함수알고리즘/백준 2023. 8. 31. 00:48
https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 모듈러 연산을 이용하는 문제이다. 너무 큰 수가 나와 컴퓨터의 연산 범위를 벗어날 수 있기 때문에 모듈러 연산을 통해 나머지를 구하는데, 모듈러 연산은 다음과 같다. (a+b)% m = {(a%m)+(b%m)}% (a x b)% m = {(a%m) x (b%m)}%m (a-b)% m = {(a%m)-(b%m)}%m 이렇게 정리를 할 수 있는데, 이 문제에서는 제곱수를 다루기 때문에 곱하기를 응용한다면 a^b % m = {(a*b^2 % m) * (a*b^2 %m..
-
unordered_map 사용방법, c++ 시간단축코드 , stoi , 입력값 정수인지 문자열인지 구분하기 , 백준 1620, 나는야 포켓몬 마스터 이다솜알고리즘/백준 2023. 8. 29. 14:51
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 포켓몬 도감 문제이다. 처음 n개의 수 만큼 입력을 받아서 순서대로 포켓몬의 이름을 입력받은 후에 , n개만큼 입력이 끝나면 m번만큼 포켓몬의 이름이나, 포켓몬 등록 순서를 알기위한 문제인데, 이를 위해서 map을 사용하는 것을 생각했다. #include mapmyMap; mapmyKey; for(int i=1 ; i> str; myMap[i] = str; myKey[..
-
"StackView로 만드는 iOS 앱 UI: NineNine 미니게임 레이아웃 구성, progressview 크기 조절카테고리 없음 2023. 8. 29. 14:40
2023.08.25 - [swift] - StackView를 통한 iOS 스토리보드 레이아웃 StackView를 통한 iOS 스토리보드 레이아웃 레이아웃을 구성하는 데에는 많은 방법이 있습니다. 상 하 좌 우 공백 값을 설정해서 view 를 배치하는 방법도 있고, stackView를 통해서 구현하는 방법도 있는데요. 저는 stackView를 사용하여 편리하 gadisom.tistory.com 지난번 포스트에서는 stackView를 통한 이점을 알아보았습니다. 오늘은 Appstore NineNine 미니게임의 더하게 게임의 레이아웃을 구현해보겠습니다 ! 우선 뷰의 레이아웃을 크게 3등분으로 나눠보겠습니다. 1. 시간 ~ 스코어보드 2. 문제, 답안 입력란 3. 번호판 입력칸 1. 시간 ~ 스코어보드 우선 ..