본문 바로가기

iOS

(10)
(iOS) Mergeable Library 삽질기(1) WWDC23에서 Mergeable Library에 대한 세션이 공개되었는데, 세션을 듣던 중 궁금한 것들이 있어 삽질한 내용을 정리해보고자 한다. 삽질한 김에 let us: Go! (iOS 개발자 컨퍼런스) 에서도 발표를 하게 되었다. - 자세한 내용은 영상 업로드가 되면 업데이트하겠습니다. 우리는 앱을 개발할 때 다양한 Swift Package Manager, Cocoapods, Carthage 등을 이용한 서드파티 라이브러리를 사용해 보면서 자연스럽게 라이브러리 사용에 익숙해져 있었다. 또한 앱 개발 중 분리하고 싶은 코드를 별도의 모듈로 만들어 Static 또는 Dynamic 하게 링킹 하여 사용하게 되었는데 이번에 공개된 Mergeable Library는 Dynamic의 빌드시간, Static L..
(iOS) Link fast: Improve build and launch times - WWDC22 앞부분 정리 프로젝트를 개발하는 과정에서 코드를 수정하고 빌드를 할 때 단순히 Build(Command + B) 버튼을 누르고 기다리기만 하는 경우가 많다. Link fast: Improve build and launch times에서는 빌드 과정에서 일어나는 일 중 특히 컴파일 및 링킹 과정이 어떻게 수행되는지를 잘 설명해주고 있다. 사내 세션 준비도 할 겸 해서 정리해 봤는데 포스팅까지 하기가 오래 걸렸다. 그럼 시작해 보자 Static Library 처음 프로그램을 개발할 때는 기능이 많지 않고 소스코드의 양도 많지 않았다. 하나의 소스파일을 컴파일하면 하나의 실행 프로그램이 나왔다. 갈수록 프로그램에서 요구하는 기능이 커지게 되고, 단순 소스코드의 양뿐만 아니라 관리점의 분리가 필요함에 따라 여러 소스코드로 ..
(iOS) Swift Macros 찍먹해보기 WWDC23에서 Swift Macros라는 기능이 공개되었다. 주로 프로젝트 진행 중 반복적으로 작성되는 보일러플레이트 코드를 줄이기 위한 목적으로 개발되었다고 한다. 얼마 전 Let Us: Go 행사에서 찍먹톤 행사를 통해 WWDC23에서 발표된 신규 기능에 대해서 접해보는 시간을 가졌는 데 이후 매크로에 대해서 정리해보고 싶었다. Macros Macro는 컴파일 시 작성한 소스코드를 변환하는것을 의미하며, 반복적인 코드를 작성하는 것을 피할 수 있도록 한다. 컴파일하는 동안 빌드 전까지 매크로에 대한 코드를 확장(Expand)한다. 매크로로 코드를 확장하는 것은 부가적인 작업이다. 매크로는 새로운 코드를 추가하지만, 기존 코드를 수정하거나 삭제하지는 않는다. 매크로의 입력 및 확장된 매크로에 대한 리..
(iOS) 유니플로거 리팩토링(3) 로그인, 회원가입 (feat. Spring Boot 삽질기) 앱의 메인 기능 개발에 앞서, 앱을 사용하기 위해서는 로그인이 필수이다.(일단 처음 기획이 그랬었기 때문에..) 따라서 앱 시작 후 가장 먼저 해야 할 일이 회원가입 그리고 로그인을 할 수 있도록 해야 한다. 일단 이를 위해서는 백앤드 작업이 필요한데..... 기존 작업돼 있던 코드를 보니 Python으로 개발이 되어있었다. 왠지 모르게 파이썬은 어렵게 느껴져 시도하기가 싫었고, node.js도 할 수는 있겠으나... 그래도 이왕 해보는 거 Kotlin 그리고 Spring Boot를 이용해 REST API를 구현해보고 싶었다. 개발환경. 언어: Java, Kotlin 둘 중에 뭐라도 상관없었음. Spring Boot Version: 3.0.0 - 그래도 버전이 높은 게 좋지 않을까 하는 기대감 빌드관리도..
(iOS) 유니플로거 리팩토링(2) 튜토리얼 저번 글에 이어서 유니플로거 프로젝트를 리펙토링....(사실 새로 만드는 중)하고 있다. (iOS) 유니플로거 리팩토링(1) XCFramework 올해도 애플에게 친구비 납입..... 올해도 친구 해줘서 고마워 애플.. 매년 친구비 나가는것도 아까운데 앱이라도 다시 출시해야지.... 2020년 말 YAPP 동아리를 통해 개발한 유니플로거라는 앱이 있 iosdev.tistory.com 이번 글에서는 튜토리얼, 로그인, 회원가입 화면을 새로 개발한 내용을 공유해보고자 한다. RIBs 적용하기 기본 립 구조는 다음과 같이 구성하도록 목표를 잡고 시작하였다. 처음 앱 실행 시 튜토리얼 수행(?) 여부에 따라 튜토리얼 화면으로 이동하거나 로그인 화면으로 이동되도록 해야 한다. 1. RootRIB RootRIB은 ..
(iOS) 유니플로거 리팩토링(1) XCFramework 올해도 애플에게 친구비 납입..... 올해도 친구 해줘서 고마워 애플.. 매년 친구비 나가는것도 아까운데 앱이라도 다시 출시해야지.... 2020년 말 YAPP 동아리를 통해 개발한 유니플로거라는 앱이 있다. 조깅하면서 쓰레기도 줍는 플로깅(Plogging)이란 활동을 조금 더 즐겁게 하도록 도와주는 취지로 개발되었지만, 서버 비용문제로 아쉽게 서비스를 종료했던 프로젝트인데..... 취직 후 개인프로젝트를 더 이상 진행하지 않다가 개인 공부 목적으로 무언가는 해야겠다 싶고.. 그렇다고 뭔가 새로 앱을 개발할만한 아이디어는 떠오르지 않아 이 프로젝트를 한번 리팩토링 해보고자 한다. 가능한 지금껏 iOS를 개발하면서 궁금했던 점들이 많았는데 그 중에서 특히 아래의 항목들을 공부하자는 취지에서 유니플로거 프로..
(iOS) Library vs Framework(3) 이전 글에서는 정적, 동적 라이브러리의 차이 및 장단점에 대해서 알아보았고, 이번 글에서는 iOS에서 프레임워크가 어떻게 구성되고 사용되는지에 대해서 정리하려고 한다. Framework 사용 목적 프로젝트 규모가 커지고 복잡해질수록 프레임워크를 사용할 때 이점이 많아질 수 있다. 라이브러리와 마찬가지로 프레임워크는 코드 구성이 쉬워지고, 재사용성이 증가하며, 목적에 따라 사용하는 코드의 분리가 가능하다. 프로젝트가 커지며 새로운 기능이 추가될 수록 당연히 코드도 복잡해지고 관리하기가 어려워진다. 따라서 프레임워크를 사용하면 다음과 같은 이점을 얻을 수 있다. 1. 모듈화 각 프레임워크는 특정 기능을 캡슐화하여 코드를 더 쉽게 이해하고 유지 관리할 수 있도록 한다. 앱의 한 영역에서 버그나 성능 문제가 발..
(iOS) Library vs Framework(2) 이번 포스팅에서는 정적(Static), 동적(Dynamic)라이브러리의 장단점, 사용하는 플랫폼에 따라 어떤 차이가 있는지 살펴본 후 프레임워크에 대해서 다뤄보려고 한다. Static Library의 장점. 1. 휴대성(Portability) 정적 라이브러리는 플랫폼에 독립적이므로 라이브러리가 컴파일된 것과 동일한 아키텍처 및 운영 체제를 지원하는 모든 시스템에서 사용할 수 있다. 여기에서 같은 아키텍처를 지원한다는 말이 조금 어려운데, 우리가 소프트웨어 개발 관점에서 아키텍쳐를 설명할 때는 시스템에서 사용중인 프로세서 또는 CPU를 의미한다. 많이 사용되고있는 x86아키텍쳐와 ARM 아키텍쳐는 사용하고 있는 명령어 셋이 다르기떄문에, 한 아키텍쳐를 목적으로 컴파일한 코드가 다른 아키텍쳐에서 실행되기는 ..
(iOS) Library vs Framework(1) iOS에서 모듈화를 하나씩 공부해 보면서 Library와 Framework를 자연스럽게 접하게 되는데 그 안에서도 Static, Dynamic으로 나눠서 사용하고 있어 정확히 어떤 형태의 라이브러리 또는 프레임워크를 이용해야 할지 확실히 몰라 정리해보고자 한다. 작성한 코드가 실행 가능한 파일이 되기까지.. 일단 iOS예시를 먼저 보기 전 C를 예로 들어보자. 아래와 같이 add라는 함수를 사용하는 코드가 있다고 해보자. // add.h #ifndef ADD_H_ #define ADD_H_ int add(int a, int b); #endif // add.c #include "add.h" int add(int a, int b) { return a + b; } // hello.c #include #incl..
Swift import 알아보기 Swift로 iOS개발을 하면서 UIKit, Foundation 등의 모듈을 import해서 사용하는데 이 import가 어떻게 수행되는지 한번 정리해보고 싶었다. 입사 동기분의 추천으로 한 유튜브 영상을 보게 되었는데, Swift에서 C & Objc, Swift 언어로 빌드된 library 또는 framework가 어떻게 import되는지 잘 설명해주고 있어 이를 정리해보고자 한다. 1. C or ObjC언어로 작성된 static library import하기. 아래 피보나치수열을 출력하는 코드를 C언어로 작성한 후 Swift에서 import해보도록 하자. // CStaticLibrary.h #ifndef CStaticLibrary.h #define CStaticLibrary.h #include #en..