티스토리 뷰

TIL

01/23 TIL [ShortcutsZip, 알고리즘, Swift]

내일은개발천재🎵 2023. 1. 24. 00:47
 

0123 TIL by JIWON1923 · Pull Request #7 · JIWON1923/Today-I-Learend

Swift Never 타입 CPU 제어권을 돌려주지 않고, 앱을 크래시 시키는 타입이다. fatal 함수의 Return 타입으로 사용된다. 검증함수 assert() / assertFailure() 경미한 에러로, 디버깅 모드에서 앱이 종료된다. pre

github.com

 

Swift

Never 타입

  • CPU 제어권을 돌려주지 않고, 앱을 크래시 시키는 타입이다.
  • fatal 함수의 Return 타입으로 사용된다.

검증함수

  • assert() / assertFailure()
    • 경미한 에러로, 디버깅 모드에서 앱이 종료된다.
  • precondition() / preconditionFailuer()
    • 반드시 앱을 종료시켜야하는 경우 사용한다.
    • 반드시 업데이트 시켜야하는 경우 등

알고리즘

BFS

  • 너비 우선 탐색으로, 다음 레벨을 탐색하기 이전에 같은 레벨에 있는 모든 노드를 방문해야한다.
  • 자료구조 Queue로 구현해야한다.

트리의 순회

  • 전위 순회 : 현재 노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 노드 (DFS)
  • 중위 순회 : 왼쪽 자식 노드 -> 현재 노드 -> 오른쪽 자식 노드
  • 후위 순회 : 왼쪽 자식 노드 -> 오른쪽 자식 노드 -> 현재 노드
  • 레벨 순회 : BFS

ShortcutsZip

 

[Fix] 앱이 백그라운드에 없을 때 공유 기능이 제대로 작동하지 않는 버그 · Issue #363 · DeveloperAcade

버그 설명 백그라운드에서 ShortcutsZip이 존재하지 않는 상태에서 공유링크를 클릭하면 비어있는 모달이 출력됩니다. 접근 단계 백그라운드에 있는 ShortcutsZip을 종료해주세요 공유받은 링크를 실

github.com

이슈가 일어난 이유

  • sheet에서 State를 사용하는 경우, 첫 화면에서 빈 화면이 나타나는 이슈가 존재한다. (iOS 14부터 존재하는 이슈로 확인됨)
    • 참조에 따르면 State 변수가 예측하기 힘든 상황에서는 데이터가 제대로 작동하지 않는다고 한다. (정확한 문서나 답변은 찾지 못했다)
    • 이를 해결하기 위해서 Sheet에 전달하는 데이터는 State가 아닌 Binding으로 전달해야한다.
    • 현재 뷰가 State로 선언되어있으며, Binding으로 변경하기 애매한 상황이다. (Read Shortcuts View, Read Curation View) 모두 작업을 진행해야함 + 참조하는 페이지가 많아서
    • 이에 팀원들과 논의 후 Navigation으로 진행하거나, Binding으로 선언한 새로운 뷰를 선언하여 작업을 진행할 예정이다. (현재는 Navigation으로 변경한 상태임)

trouble shooting

어떤 Navigation Path에 추가해야하는가?

  • 현재 탭뷰를 사용하고 있어서, 3개의 Navigation Path를 선언해서 사용하고 있다.
  • 그래서 무작정 첫번째 Navigation Path에 Append 할 경우, 큐레이션 탭에서 백그라운드를 둔 채 링크를 클릭하면, 제대로 동작하지 않는다.
  • 현재 사용자가 있는 탭이 App Storage에 저장되어있다는 점에서 착안하여 switch 문을 통해 path를 append할 수 있도록하여 문제를 해결하였다.

같은 코드의 중복

  • 단축어 글에 대한 정보를 공유할 수도 있고, 큐레이션 데이터를 공유할 수도 있다.
  • 이에 데이터 형태만 다른 두 개의 함수를 사용해야했다.
  • 제네릭을 통해 구현하였으며, switch 문을 사용하기 위해 T의 제약조건을 Hashable로 두었다.

switch @unknown 키워드

  • 탭이 충분히 추가될 가능성이 있기 때문에, unknown 키워드를 사용하고자 했다.
  • 하지만 case가 정의된 것이 아니라, 정수형태를 사용했기 때문에 정의하지 못했다.
  • 이를 위해 따로 case를 만들어야할지는 고민이 된다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함