PreferenceKey는 하위 뷰에서 상위 뷰로 데이터를 전달하기 위한 메커니즘입니다. 일반적으로 SwiftUI는 데이터가 상위 뷰에서 하위 뷰로 전달되는 구조를 따르지만, PreferenceKey는 그 반대 흐름을 가능하게 해줍니다.PreferenceKey의 주요 구성 요소PreferenceKey는 다음과 같이 세 가지 주요 요소로 이루어집니다:키 등록: PreferenceKey 프로토콜 준수 및 타입 정의값 송신: 하위 뷰에서 preference 메소드를 통해 값 전달값 수신: 상위 뷰에서 onPreferenceChange 메소드를 통해 값 수신PreferenceKey 프로토콜 구조SwiftUI에서 PreferenceKey는 아래와 같은 프로토콜로 정의됩니다.public protocol Prefer..
ㅇ이번글은 단순히 UIImage, Image를 말하는 게 아닌 더 딥한 정보들을 정리할 계획이다. 먼저https://developer.apple.com/design/human-interface-guidelines/images Images | Apple Developer DocumentationTo make sure your artwork looks great on all devices you support, learn how the system displays content and how to deliver art at the appropriate scale factors.developer.apple.com 우선 이미지는 두가지 방식으로 구성된다.래스터 이미지: 픽셀로 이루어져 해상도가 고정되어 있어 확..
https://school.programmers.co.kr/learn/courses/30/lessons/258705 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제분석n이 주어지면 밑변이 n+1로 깔림. 그리고 tops 배열에 따라 위에 삼각형이 있는지 없는지 결정된다. 1이면 위에 있는거고 0이면 없는거고 즉 위의 이미지는 일부러 짤랏지만 [0,1]이겟쥬? 그런데 삼각형 2개로 이루어진 사다리꼴과 삼각형 1개로 배치해서 가득 채우는 경우를 10007로 나누라고 한다.문제접근에? 이렇게 큰 수로 나눠? 이건 DP네~! 자 여기까지 감을 잡았다. // 그런데 기존의 DP와 다른게 n도 달라질수 ..
https://www.acmicpc.net/problem/12980흠..이 문제는 풀이가 없는 것 같아서 내가 먼저 올린다. 그래야 조회슈 ㅎ...는 농담이고 문제가 재밌다.문제분석1. 순열의 크기 n이 주어진다. 그리고 1..N까지 써야하는 배열이 있다. 이 배열에는 0이 있는데 이는 지워졌다는 것을 의미한다.2. 즉 0자리에는 이미 배열에 있는 수 말고 1..N까지의 수 중 아무거나 사용할 수 있다.3. 하지만 S 점수를 맞추는 경우의 수를 구해야한다.4. 점수? [1,2,3] 이라고 보면 [1,2] , [1,3], [2,3]의 케이스가 가능하기에 총 3점이다. 이런식으로 배열의 인덱스와 값을 비교해 i 문제접근1. 0인 곳에 남은 수로 채워서 모든 경우를 구해보자.2. 그 케이스별로 계산을 하여..
https://school.programmers.co.kr/learn/courses/30/lessons/214288 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr오랜만입니다. 알고리즘은 계속 풀고 잇엇으나 그닥 올릴만한 것이 없어서...ㅜ (핑계핑계)자 이번문제는 내가 PM이라고 몰입해야한다.문제 분석 1. 멘토에게 유형이 있음. 맞는 유형의 사람을 시간이 되면 한명씩 진행. 2. 그런데 만약 여러명이 웨이팅중이다? 가장 먼저 상담요청한 참가자부터 진행한다. 3. req는 c번 유형의 사람이 a분때 b분만큼 요청하는 것을 의미한다. -> 결국 구해야하는것은 기다리는 시간을 최소로 하도..
앱 내에서 새로운 친구를 맺을 때, 링크를 통해 친구를 맺고, 만약 다운받지않은 유저라면 앱스토어로 이동하도록 구현을 해야했다. 그러면 어떻게 공유할 수 있을까? 카카오 API의 방법도 있지만 애플로그인으로 하는 경우에는 사용하지 못한다. 그래서 우리는 iOS16이전까지는 위의 기능을 UIKit을 이용해야 했지만 이후에서는 ShareLink를 통해 자체적으로 SwiftUI에서 사용할수 있기에 위의 기능을 사용하기로 했다.아주 쉽다. 그 전에 ShareLink를 통해 데이터를 내보낼 수 있는데 해당 데이터(Item) Transferable 프로토콜을 준수해야한다.ShareLink(item: subject: message:): subject는 제목으로 공유대상이 이메일, 메시지 앱 등일때 필드들이 미리 채워..
What is SilentPush?- 백그라운드에서 앱 업뎃하기 즉 유저가 느끼지 못하게 앱 내에서 정보를 업뎃해야할 때 사용한다. 내가 개발하는 앱에서는 해당 날짜의 여행이 있을때 silentPush로 상태 변화를 위해 사용했다. 기존의 코드에서는 매일 24시간마다 백그라운드에서 allFetch를 통해 여행이 있는지를 체크해주었지만 이는 여행이 없더라도 매일 백그라운드에서 업뎃을 하기에 비효율적이라고 판단했다.Silent Push 페이로드에서는 3가지가 값이 추가로 있어야 가능하다고 한다. "content-available": 1, "apn-push-type": "background","apn-priority": 5apple developer에 보면 이 푸쉬는 우선순위가 낮아 짧은 시간에 노티피케이션 ..
TCA의 테스트코드 적용을 살펴보기 전에 먼저 TestCode에 대해 생각해보고 가려한다. 어디까지 짜야하고 어디까지 커버리지를 올려야하는가..에 관한 얘기가 될수 있을거같다.먼저 Unit Test와 UITest가 있다. Unit Test는 내가 원하는 메서드들이 의도한대로 작동을 하는지를 검증하는것이다.효과적인 UnitTest를 위해 가장 먼저 생각해봐야할 First 한 FIRST가 있다.Fast: 테스트가 빠르게 실행되어야한다. 왜? 느린 테스트는 개발자가 또 코드를 수정하고 결과를 확인하기까지 시간이 걸리므로 생산성 저하Independent/Isolated: 테스트는 서로의 상태를 공유해서는 안된다. 즉 의존하지 않고 각각의 테스트 서로 독립적으로 실행되어야 신속하게 변경에 반응할 수 있다.Repe..
이전까지는 테스트코드나 프리뷰 코드 없이 오직 Dependency의 라이브밸류를 통해서만 개발을 테스트하고 진행했다. 하지만 이렇게 하다보니 계속 빌드를 해야한다는 단점이 있었고 원하는 플로우를 보기위해 과정이 커질수록 시간이 오래걸리고 임의의 값을 넣어 테스트하기도 힘들었다. 그래서 드디어 테스트 코드와 프리뷰코드를 공부해보려 한다. ㅠㅠㅠ 늦었따!https://axiomatic-fuschia-666.notion.site/Chapter-9-TCA-Testable-Code-ad3924113fbb4f89a06f30ddb8e884f7 Chapter 9. TCA와 Testable Code | Notion9.1 유닛 테스트axiomatic-fuschia-666.notion.site역시나 노션문서를 통해 참고하여..