Swift
-
SPM을 사용하는 프로젝트에서 SPM의 번들에 접근하고 싶은 경우Swift 2022. 10. 28. 01:31
제목이 좀 길긴하지만, 최대한 쉽게 간단하게 적어보았다. 내가 만든 spm에서 사용하는 번들 내부에 있는 리소스들을 (asset파일, json 파일 등)을 spm을 적용시킨 프로젝트에서 사용하고 싶은 경우가 있을 수 있다. 그럴 경우 spm 내부에서 정말 간단하게 extension을 하나 걸어주면 된다. 위 처럼 Bundle의 extension으로 타입 프로퍼티 변수로 하나 만들어주면, 프로젝트에서 해당 spm Bundle에 마음껏 접근이 가능하다. 다음은 사용 예시다. 매우 간단하다. 이건 조금 case가 드물 수도 있어서 적어본다. 위와 같은 형식으로 SwiftUI modifier를 View에 extension 시키는 함수가 있었다. 너무도 당연하게 Color의 "BackgroundColor"가 as..
-
SPM에서 asset 파일 사용 방법Swift 2022. 10. 28. 01:11
SPM에서 asset 파일을 사용하고 싶은 경우 아래처럼 MyLibrary(최상위 spm 이름) -> Sources -> MyLibrary 내부에 asset 파일을 새롭게 추가하면 된다. asset 파일을 추가하게 되면 기존과는 다르게 Media라는 이름으로 파일이 생성되게 된다. asset 파일은 따로 Package.swift 파일에서 각 타겟들에 resources에 추가해주지 않아도 알아서 번들화를 시켜준다. 이렇게 세팅을 해준 후에 이미지나 컬러 등을 추가해주고 사용하면 된다. 찾다보면 여러가지 방법들이 다양하게 나오지만, Bundle.module 이런식으로 사용해주면 정상적으로 뜨는 것을 확인할 수 있다. 예시) SPM에서 asset 파일 외의 resource 들을 사용하고 싶다면? 예시로 jso..
-
회사 코드 private 라이브러리 회상 (3) - 새로 알게된 점Swift 2022. 10. 27. 01:11
이번에 새롭게 알게된 점 class의 접근 제어자를 open으로 해야 타 모듈에서 상속받을 수 있다는 점을 알게되었다. spm에서 asset catalog를 사용하려면 아래 이미지 들 처럼 Bundle.main을 사용해서 접근해야한다는 것을 알게되었다. (spm 내부소스에서 접근을 원할 때! spm을 사용하는 프로젝트에서 사용하고 싶다면, sharedBundle 등으로 다로 처리를 해주어야 한다.) 역시 cocoapod보단 spm이 빌드 속도는 압도적이다.
-
회사 코드 private 라이브러리화 회상 (2) - SPMSwift 2022. 10. 27. 01:01
2022.10.27 - [Swift] - 회사 코드 private 라이브러리화 회상 (1) - CocoaPod 회사 코드 private 라이브러리화 회상 (1) - CocoaPod 회사 코드를 라이브러리화 시켜야하는 일이 생겨서 진행했다. 선택지는 두 가지였다 cocoapod, spm 라이브러리를 private하게 해포해야 했다. 우선 cocoapod으로 진행한 것부터 적어본다. (public으로 할 garlic-onion.tistory.com 이전글에서 시도한 CocoaPod에 이어 SPM으로 시도하기로 했다. CocoaPod에 비해 spm은 훨씬 쉬웠다. 일반 public으로 배포하는 것처럼 소스추가하고 dependency 추가하고 하면 되는데, git repo를 private하게만 만들면 접근이 p..
-
회사 코드 private 라이브러리화 회상 (1) - CocoaPodSwift 2022. 10. 27. 00:38
회사 코드를 라이브러리화 시켜야하는 일이 생겨서 진행했다. 선택지는 두 가지였다 cocoapod, spm 라이브러리를 private하게 해포해야 했다. 우선 cocoapod으로 진행한 것부터 적어본다. (public으로 할 경우 cocoapods trunk에 배포하면 됨으로 아래 방법과는 정말 약간 다르다) 평소에는 cocoapod을 pod install, pod update 정도로만 사용했지, 이렇게 깊게 파본 적은 처음이었다. 가장 처음 멘붕 왔던 것은 spec repo와 pod repo의 혼동이었다. 처음에는 무작정 따라하는데 2~3일 동안 repo를 하나만 파고 진행해서진도가 나가지를 않았었다. 하위 세가지의 개념을 명확히 하여 다른 블로그를 참고할 때 혼동이 없었으면 한다. Pod.spec =..
-
Swift 상수, 구조체가 좋을까 Enum이 좋을까?Swift 2021. 2. 13. 16:32
하하, 여러분 안녕하십니까? 갈릭입니다. 오늘은 코드를 작성하다 보면 한번 쯤은 생각해 봤을 법한 것에 대해 작성을 해보고자 합니다. 바로! global하게 접근하고자 하는 상수를 정의하고자 했을때 어떤 방법이 좋을까? 입니다. 당연하게 첫번째로 생각나는 것은 그냥 전역으로 상수를 하나 선언해주는 것입니다. 하지만 이렇게 사용하게 된다면, 인스턴스 프로퍼티와 이름이 혼동될 경우가 발생할 수도 있습니다! 이는 매우 위험하죠. 이를 고려하게 되면, 두번째로는 타입 프로퍼티가 생각이 납니다. 왜냐하면 타입 프로퍼티는 각각의 인스턴스가 아닌 "타입 자체에 속하는 프로퍼티" 이기 때문에 인스턴스 생성 여부와 관계 없이 타입 프로퍼티의 값은 하나이기 때문이죠. (초기화와 관계없이 모든 인스턴스에서 공통으로 사용할 ..
-
MVC 패턴이란?Swift 2020. 12. 22. 10:00
MVC 패턴은 Model - View - ViewController로 이루어진 형태의 desgin pattern이다. 현재 iOS에서 굉장히 많이 사용되고 있는 디자인 패턴이며, 애플에서 권장하는 디자인 패턴이기도 하다. 하지만 최근 MVVM 패턴의 선언형 프레임워크인 SwiftUI가 나오면서 필자는 사용해 본적 없는 MVVM 패턴과 MVC 패턴의 차이점을 명확히 알고자 정리하게 되었다. 들어가기 전 간단정리! Model은 앱에서 사용되는 데이터들을 관리 및 구성(?)하는 역할 View는 데이터를 보여주는 역할이다. ViewController는 View와 Model의 사이에서 유저의 인터렉션을 처리해주어 액션에 따라 View와 Model간의 중재를 한다. Model을 업데이트 해주고 Model과 View..