🍏/Swift(35)
-
[Architecture] Modular Architecture / MFA에서 추상레이어의 Export
Swift의 modular architecture / Micro Feature Architecture(MFA)에서 Feature, Domain, Core, Shared의 레이어를 추상적으로 나누고 해당하는 레이어에 맞춰서 코드를 관리할 때 Export를 통하여 제어합니다. 이 글에서는 Core 레이어를 통하여 예시를 들고있습니다. CoreExport.swift 파일을 사용하여 다른 모듈에서 CoreNetwork 및 CoreNetworkInterface 모듈을 임포트할 수 있도록 설정하는 것은 모듈 간의 의존성 관리 및 코드 재사용성을 높이기 위한 전략 중 하나입니다. 이러한 접근 방식은 특히 대규모 프로젝트나 여러 모듈이 상호작용하는 복잡한 시스템에서 유용합니다. CoreExport.swift의 목적 간..
2024.04.01 -
[Swift] Tail Call Optimization / TCO / 꼬리재귀
꼬리 재귀 최적화란? 꼬리 재귀 최적화는 컴파일러가 꼬리 호출(tail call), 즉 함수의 마지막 동작이 함수 호출인 경우, 새로운 스택 프레임을 생성하는 대신 현재의 스택 프레임을 재사용하여 함수를 호출하는 최적화 기법이다. 이 최적화를 통해 함수 호출에 따른 오버헤드를 줄이고, 스택 오버플로우의 위험을 감소시킨다. func sumPrefix(_ n: Int, _ acc: Int) -> Int { if n == 0 { return acc } return sumPrefix(n - 1, acc + n) } print(sumPrefix(1000000, 0)) 해당 재귀를 부르면 어떻게 될까 ? - 대부분의 정답은 어느정도 depth를 들어가다가 한계를 맞이하고 segmentfault를 띄울 것 이다. 라..
2024.03.16 -
[Swift] Metadata
메타데이터(Metadata or Metainformation)는 데이터(data)에 대한 데이터. 보통은 다른 데이터의 내용, 특성, 품질, 조건 등을 설명하는 정보입니다. 이렇게 흔히들 간단히 정의하지만, 캐런 코일(Karen Coyle)에 의하면 '어떤 목적을 가지고 만들어진 데이터(constructed data with a purpose)'라고도 정의한다. 즉, 다른 데이터를 정의하고 기술하는 데이터(data that defines and describes other data)입니다. 예를 들어, 디지털 이미지 파일의 메타데이터에는 촬영 날짜, 사용된 카메라의 모델, 이미지의 해상도 등의 정보가 포함될 수 있습니다. HTML 문서에서 메타데이터는 태그를 사용하여 문서의 인코딩, 저자, 설명, 키워..
2024.03.14 -
[Firebase] iOS UIKit에서의 Google OAuth 로그인 연동 방법 해결 과정
Firebase 를 시작하여 프로젝트 만들기 앱에 Firebase를 추가하여 시작하기 (bundle id, nickname 등록) 구성 파일 다운로드(Google OAuth 사용자는 굳이 다운로드 안해도됨. 잠시 뒤에 credentials가 포함된 구성파일을 준다.) Upload 해도되는가에 대해서 찾아봤는데, 뭐 중요한 내용은 없다고 한다. (https://groups.google.com/g/firebase-talk/c/EEEwttbpPJU) 그래도 저라면 안 올릴 것 같습니다. Package Dependency 추가 https://github.com/firebase/firebase-ios-sdk Appdelegate에 코드 추가 더보기 import UIKit import FirebaseCore @UI..
2024.03.03 -
[Extension] ShareExtension에서 Containing App을 여는 방법
URL Schemes에 대한 공식문서 About Apple URL Schemes About Apple URL Schemes This document describes several URL schemes that are supported by system apps on iOS, macOS, and watchOS 2 and later. Native iOS apps and web apps running in Safari on any platform can use these schemes to integrate with system apps developer.apple.com Share Extension 프로그래밍 가이드 공식문서 App Extension Programming Guide: Share App Ex..
2024.02.20