iOS

    [Swift] Method Dispatch

    이전에 Method Swizzling 에 대해 알아본 적이 있다. [Swift] Method Swizzling Swift에서 같은 이름의 Method를 호출하면서 상황에 따라 기능을 다르게 할 수 있다. 이를 Method Swizzling이라고 하는데, 간단히 알아보자. 예를들어, calFunction을 호출하는데 어쩔 때는 + 기능을 수행하 littlemoom.tistory.com 함수의 포인터를 활용해서 함수가 호출하는 코드의 위치를 바꾸는 방식이었는데 Objective-C와 관련이 있다고 했다. 오늘은 Objective-C와 Swift에서 함수가 호출되는 방식과 어떻게 활용해야하는지 알아보자. Swift에서 함수가 호출되는 방식은 총 세가지다. 1. Static Dispatch 2. Dynamic ..

    [iOS] CI/CD 환경 구축하기 - 2. fastlane match & CI/CD in Git Actions

    [iOS] CI/CD 환경 구축하기 - 2. fastlane match & CI/CD in Git Actions

    총 4개의 스텝으로 진행됩니다. 1. Tuist Generate in Git Actions 2. Build Project by Using fastlane in Local 3. fastlane match 4. Tuist + fastlane in Git Actions https://littlemoom.tistory.com/50 지난 편에 이어서 진행해보도록 하겠습니다. 프로젝트를 Git에 연동하시는 경우 키 값 및 이메일 등 중요 정보가 Public Repository에 노출되지 않도록 주의해주세요! 3. fastlane match match - fastlane docs type Define the profile type, can be appstore, adhoc, development, enterprise..

    [iOS] CI/CD 환경 구축하기 - 1. Tuist in Git Actions & fastlane

    [iOS] CI/CD 환경 구축하기 - 1. Tuist in Git Actions & fastlane

    2년을 넘도록 언젠가는 해야겠다는 생각만 하다가 이제서야 하게 되는 CI/CD 설정입니다. CI/CD가 무엇이냐? 에 대한 설명은 RedHat의 포스팅을 첨부하도록 하겠습니다. What is CI/CD? CI/CD introduces ongoing automation and continuous monitoring throughout the lifecycle of apps, from integration and testing phases to delivery and deployment. www.redhat.com 이번 글에서 사용할 도구들은 Git Actions Tuist 3.15.0 fastlane 2.217.0 입니다. (버전은 글 작성 시점에서의 버전입니다.) Tuist의 설치는 이전 포스팅을 참고해..

    [Swift] Protocol Composition

    Swift는 Protocol 지향 언어입니다. 클래스를 사용하지 않고 오로지 Protocol만을 사용하여 프로그램을 작성할 수 있을 정도인데요. 오늘은 Protocol과 관련된 키워드 중 Protocol Composition에 대해 알아보도록 하겠습니다. 1. Protocol Composition(프로토콜 컴포지션) 이란? Protocol Composition이란 여러개의 프로토콜을 묶어서 사용하는 방식을 말합니다. 여러 Protocol을 결합하여 단일 Type이 여러 Protocol을 동시에 준수할 수 있도록 하고, 이를 통해 더 유연하고 강력한 코드 설계가 가능해집니다. 2. 사용 형태 Protocol Compotision은 Protocol을 & 기호를 사용하여 연결하면 됩니다. 예를 들어, Prot..

    [iOS] Tuist - 4. Project 생성

    [iOS] Tuist - 4. Project 생성

    드디어 프로젝트를 생성할 단계까지 왔습니다. 오늘에야말로 Project.swift 수정할 예정입니다. 그전에! 저희가 목표했던 프로젝트의 구조를 다시 한 번 생각해봅시다. 프로젝트 안에 타겟은 다음과 같이 생성되어야합니다. Project ├── AppName ├── AppName_Test ├── Content (Push 관련 Extension) └── Service (Push 관련 Extension) 터미널에서 다음 명령어로 Tuist 프로젝트를 오픈합시다. $ tuist edit 0. Project 생성자 Project의 초기화 함수는 다음과 같습니다. Project( name: String, organizationName: String?, options: Project.Options, packages..