eung7.archive
close
프로필 사진

eung7.archive

github: @eung7

  • 분류 전체보기 (30)
    • CS (5)
      • 운영체제 (5)
      • 네트워크 (0)
    • iOS (22)
      • Swift (1)
      • iOS 기본 (6)
      • iOS 응용 (9)
      • XCode (6)
    • Flutter (1)
      • Dart (1)
      • Flutter 기본 (0)
      • Flutter 응용 (0)
    • 소프트웨어 공학 (2)
  • 홈
  • GitHub
NWPathMonitor로 네트워크 에러를 감지하고, UI 업데이트하기

NWPathMonitor로 네트워크 에러를 감지하고, UI 업데이트하기

서론 앱 개발자로서 안정적이고 끊임없는 네트워크 연결을 기대합니다. 하지만, 네트워크 연결은 언제나 변수가 존재 이런 예측할 수 없는 변수들 속에서 사용자에게 명확한 UI를 제공하는 것은 당연 이번 글에서는 Network 프레임워크의 NWPathMonitor라는 것을 이용하여 기본 원리와 사용 방법을 소개 NWPathMonitor NWPathMonitor는 Network 프레임워크에 포함된 클래스 글자 그대로 Apple이 제공하는 다양한 플랫폼에서 네트워크 연결성을 모니터링할 수 있는 역할, 뿐만 아니라 인터넷 연결, 셀룰러 데이터 인지 파악 각 다양한 인터페이스마다 다양한 적절히 조치를 취하는 것이 가능 Singleton 객체 만들기 final class NetworkCheck { static let ..

  • format_list_bulleted iOS/iOS 응용
  • · 2024. 4. 10.

메모리 관리의 weak와 unowned의 차이점

서론 Swift에서는 메모리 관리를 ARC(Automatic Reference Counting)을 통해 개발자가 개입하지 않아도 자동으로 처리해줍니다. 하지만 메모리 누수(Memory leaks)나 강한 순환 참조(Strong Reference Cycles)를 방지하기 위해서는 두 가지 참조 방식인 weak, unowned는 필수로 알고 있어야합니다. 이번 글에서는 두 개의 차이점과 어느 시점에 적절하게 사용되어야하는지 알아볼 것입니다. Weak weak 참조는 참조하는 대상의 Reference Count를 증가 시키지 않습니다. 그러므로 강한 순환 참조를 방지할 수 있게됩니다. weak 참조는 항상 옵셔널이어야 합니다. 만약 weak가 참조하고 있는 Reference Count가 0이 된다면, weak..

  • format_list_bulleted iOS/Swift
  • · 2024. 4. 9.
GitHub Actions로 CI를 구축하여 SwiftFormat 테스트하기

GitHub Actions로 CI를 구축하여 SwiftFormat 테스트하기

서론CI는 프로젝트를 관리하면서 개발 프로세스를 자동화하고 개선하기 위한 방법론입니다. 테스트가 수행되어 문제점을 조기에 발견하고 해결할 수 있는 아주 좋은 도구입니다.편행 프로젝트는 SwiftFormat을 이용한 팀원들의 코드 포맷과 Build 테스트 두 가지를 적용하는 CI를 적용했습니다.CI는 GitHub Actions을 이용하여 구현했고, 이번 글은 그 과정을 소개하려고 합니다. YAML 파일 생성먼저 yaml파일을 생성해야합니다. yaml파일은 프로젝트 레포지토리에 있는 .github/workflows 경로에 생성하면 됩니다.이 yaml파일은 CI를 실행시킬 조건, 테스팅을 어떻게 진행할지에 대한 총괄하는 파일입니다.참고로 WorkFlow는 프로세스에서 여러 단계를 거쳐..

  • format_list_bulleted iOS/iOS 응용
  • · 2024. 4. 8.
SwiftUI에서 ViewModel을 효과적으로 사용하고, DIP를 지키는 방법

SwiftUI에서 ViewModel을 효과적으로 사용하고, DIP를 지키는 방법

서론 SwiftUI에서 MVVM을 채택하게 되면 ViewModel을 어떤 방식으로 구현할지 고민을 해봐야합니다. SwiftUI에서 제공해주는 API인 State, ObservableObject은 Source Of Truth라는 중요한 것들이 있습니다. ViewModel은 한 화면마다 하나의 Source Of Truth로 구현되어야 마땅합니다. 이번 글에서는 SwiftUI에서 ViewModel을 어떻게 쉽게 관리할 수 있는지, 또 Clean Architecture를 위한 DIP는 어떤식으로 지켜질 수 있는지 알아보겠습니다. ObservableObject의 ViewModel ViewModel은 Source Of Truth이어야합니다. 즉 여러 값으로 복사되어 여러 객체에서 사용되지 않아야 합니다. 그래서 주..

  • format_list_bulleted iOS/iOS 응용
  • · 2024. 4. 6.
RxFlow로 Coordinator 고급스럽게 사용하기

RxFlow로 Coordinator 고급스럽게 사용하기

발견한 Coordinator의 문제점 Rx를 대부분으로 사용하는 프로젝트에서 Coordinator만 Reactive하지 않다는 문제점 사용자 액션 및 이벤트를 Coordinator에게 전달할 때, 넘어가야할 객체의 수가 많은 경우가 존재 기존에는 Delegate Pattern으로 이벤트를 전달했지만 중복된 코드가 많아지고 코드의 가시성이 현저히 떨어짐 위 사진은 일반적인 경우지만 더 많은 하나의 이벤트가 훨씬 많은 Delegate 메서드를 필요로 하는 경우도 존재 RxFlow 코디네이터 패턴에 ReactiveX(rx)를 접목시켜 만든 라이브러리 고전적인 Delegate Pattern을 탈피하고 Flows를 이용하여 네비게이션이 좀 더 명확해짐 FlowCoordinator를 기본적으로 제공하여 Flows사..

  • format_list_bulleted iOS/iOS 기본
  • · 2024. 4. 4.
RxDataSource의 다중 섹션을 사용할 때 ReloadData 문제와 해결방법

RxDataSource의 다중 섹션을 사용할 때 ReloadData 문제와 해결방법

서론 해당 프로젝트는 RxSwift, ReactorKit 기반으로 구현되어 있어서 다른 기술 스택 모두 Reactive화를 시키는 것에 의의를 두고 RxDataSource를 도입했습니다. 하지만 RxDataSource를 사용하면서 다중 에서의 트러블 슈팅에 대한 것을 소개하고 그 해결 과정에 대해서 소개하려고 합니다. RxDataSource의 문제 발견 마지막 취향 섹션을 선택할 때, 나머지 이름, ID 섹션이 모두 초기화되는 문제점이 발생했습니다. 왜 이런 이슈가 발생하는걸까요? 원인을 파악하기 위해서 디버그 과정을 거쳐야합니다. private lazy var dataSource: EditMyPageDataSource = EditMyPageDataSource( configureCell: { [weak ..

  • format_list_bulleted iOS/iOS 기본
  • · 2024. 4. 4.
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • navigate_next
전체 카테고리
  • 분류 전체보기 (30)
    • CS (5)
      • 운영체제 (5)
      • 네트워크 (0)
    • iOS (22)
      • Swift (1)
      • iOS 기본 (6)
      • iOS 응용 (9)
      • XCode (6)
    • Flutter (1)
      • Dart (1)
      • Flutter 기본 (0)
      • Flutter 응용 (0)
    • 소프트웨어 공학 (2)
Copyright © Eung7 모든 권리 보유.

티스토리툴바