[Swift] Xcode 노스토리보드 환경 구축 + SPM으로 Snapkit 설정

팔랑이·2024년 6월 24일
0

iOS/Swift

목록 보기
37/71
post-thumbnail

서론

스토리보드가 아직 훨씬 익숙하지만, 협업과 취업을 위해서라면 코드베이스 프로젝트에 익숙해져야만 한다.
코드로 UI를 작성할 때 제약조건 거는 것이 매우 귀찮고 코드가 긴데, 써드파티 라이브러리인 SnapKit을 사용하면 이 과정이 매우 편해진다고 한다.

그런고로 오늘은 미래의 나를 위한 노스토리보드 환경 구축 방법 (할때마다 찾아보니까 귀찮다), 스냅킷에 대한 간단한 설명을 작성해보려고 한다.


No-Storyboard 환경 구축

1. New Project

평소처럼 iOS -> App 선택

2.

평소처럼 이름 적고 Storyboard 로 선택하여 생성

3.

Main.storyboard 삭제 (Move To Trash)

4.

info.plist에서 main 검색, 나오는 행 삭제

5.

좌측 네비게이터 -> 프로젝트 아이콘 클릭
-> 타겟 -> Build Settings -> main 검색하여 나오는 행 삭제

6. Scenedelegate 수정

Scenedelegate에 다음의 코드 작성

var window: UIWindow?
    // 윈도우. 앱에 반드시 한 개는 필요한 가장 근본이 되는 뷰. 이 위에 뷰가 쌓이기 시작.

    // 앱을 시작할때 세팅해줄 코드를 작성하는 곳.
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // UIWindow 객체 생성.
        guard let windowScene = (scene as? UIWindowScene) else { return }
        let window = UIWindow(windowScene: windowScene)
        
        // window 에게 루트 뷰 지정.
        window.rootViewController = CalculatorViewController()
        
        // 이 메서드를 반드시 작성해줘야 윈도우가 활성화 됨.
        window.makeKeyAndVisible()
        self.window = window
    }

이렇게하면 노스토리보드 환경 구축이 완료된다.


SPM

SPM(Swift Package Manager)은 Swift 프로젝트를 위한 도구로, 패키지를 관리하고 의존성을 처리해준다. Cocoapods, Cartage 등과 같은 서드파티 툴이 아닌 공식적으로 지원하는 퍼스트파티 툴로, Xcode 11부터 추가되었다고 한다.

의존성이 뭔 말인지 몰라서 한번 정의하고 넘어가기

의존성

:필요로 한다는 의미 - 소프트웨어 개발에서 어떤 코드나 프로그램이 다른 코드나 프로그램을 필요로 하는 경우로, 쉽게 말해 프로젝트가 제대로 동작하기 위해 필요한 외부 라이브러리나 프레임워크를 의미한다.

  • 예를 들어, 어떤 앱이 네트워크 요청을 처리하기 위해 Alamofire라는 라이브러리를 사용한다면 Alamofire가 그 앱의 의존성이 되는 것.
  • 이때 의존성 관리를 잘못하면, 버전 충돌이나 업데이트 문제로 인해 앱이 제대로 동작하지 않을 수 있다.
  • 그래서 패키지 설치, 버전 관리, 의존성 트리 관리 등을 도와주는 의존성 관리 도구가 필요한 것!

나중에 읽으려고 가져온 KakaoTech 스냅킷 관련 아티클

이렇게 깊게 공부해야 되는구나...... 저걸 완전히 이해하는 날까지 파이팅

뼐참고
의존성 역전 원칙(Dependency Inversion Principle)의 의존성도 같은 개념이다
SPM의 의존성 - 프로젝트가 외부 라이브러리나 패키지를 필요로 하는 것
DIP의 의존성 - 클래스나 모듈이 다른 클래스나 모듈을 필요로 하는 것

무튼 스냅킷 추가시 주의사항

Targets -> General -> Frameworks, Libraries, and Embedded Content에서 밑의 + 표시를 누르면 (사진엔 이미 적용되어 있음)

이런게 나온다. Add Package Dependency 클릭 후

주소창에 스냅킷 링크를 검색해주면 나옴.

❗️❗️여기서 주의❗️❗️

두개의 패키지가 나오는데,
SnapKit는 내 프로젝트를 가리키게 해 주고

위의 이 Dynamic은 None으로 설정

같은 과제를 한 여러명의 사람들이 이거 설정 안하면 오류난다고 한다.
왜인지는 모름
알게되면 추가 수정하러 오겠음

profile
정체되지 않는 성장

0개의 댓글