본문 바로가기
iOS/라미란(라이브러리 뜯어보기)

라미란 TIL (#1)

by 안녕주 2022. 4. 13.

안녕하세요! 안녕주입니다.!

이누님의 TIL을 보고 감명 받아.. 매일은 힘들지만 라이브러리를 뜯어보며 공부하면서 공부해야할 키워드 또는 알게 된 것들을 조금씩 적어보려고 합니다..! 이름하여 내 멋대로 하고싶은날에 하는 TIL..! 

 

먼저 라미란이란..? 이브러리에 친 사람들이의 줄임말으로, 라이브러리를 뜯어 보면서 새롭게 알게 된것을 나누는 스터디입니다..! 

이번주에는 SnapKit 라이브러리를 뜯어 보면서 새로운것을 알아봤습니다.

공부를 하면서 느낀건데, 정말 라이브러리는 보기가 어렵드라고요..! 하지만 천천히 한줄한줄 모르는 것이 있다면 찾아보면서 문법 + 개발 기반 지식을 쌓고 있습니다!

 

 

 💥 설치법

  1. CocoaPods
    • 설정이 편함
  2. Carthage
    • Cocoapods 보다는 더 좋은 방식이라는데
  3. Swift Package Manager
    • 사용하기 편함
    • 현재 플젝에 대한 모든 dependency들을 생성해서 다운로드 하는 과정을 자동화함으로써 자동화하지 않았을 때 들었던 비용을 줄임.
    • Xcode 11부터 intergrate되었음

 

💥 간단한 사용법

 

 

💥 폴더링

폴더 구조 부터 보자..

생각보다 보기 좋게 되어있다!

중요해 보이는 파일들은

Extension, DSLs, Maker, Targets, Models....

Models 부터 봐야할거 같은 느낌?


💥 Models

1. Typealiases 파일

  • import Foundation은 무엇인가
    • Foundation Framework : 데이터 저장, text 처리, 날짜 및 시간 계산, 정렬 및 필터, 네트워킹을 포함한 앱 기능 —> UIKit에는 이 Foundation이 기본적으로 import 되어 있기 때문에 UIKit만 해도 대부분의 기능을 사용할 수 있다.
  • #if 어쩌구 #else, #endif 형태는 무엇인가
    • 전처리문 : 컴파일 이전에 미리 처리되는 문장을 의미하며, #으로 시작한다.
    • 쓰는 경우 : (1) release, debug를 구분 (2) OS를 구분할때 (snapkit에서는 주로 os 구분할 때 사용)
  • typelias는 무엇인가
    • 별칭으로 만들어 주는 역할. 오른쪽에 있는 것을 왼쪽의 이름으로 별칭을 만든다



2. Constraint 파일 

  • import UIKit
    • 프레임워크 : Xcode는 UI 기반으로 앱을 빌드하는데, UI의 요소 요소가 오브젝트(object)로써 기능하며, 이러한 오브젝트들의 인터렉션이나 콘텐츠 요소를 UIKit이 지원하고 있다.
    • UIKit은 앱의 메인 이벤트 루프를 실행하고 화면에 컨텐츠를 표시하며 여러 오브젝트를 제공하는데, 앱의 구조는 MVC(Model-View-Controller) 디자인 패턴을 기반으로 한다.

  •  SwiftUI와의 차이 : SwiftUI는 iOS13부터 세상에 나왔다. SwiftUI는 UIKit을 기반으로 동작한다. AutoLayout을 CSS에서 사용되는 Felxible Box Layout이 적용 되었고, (HStack, VStack, ZStack) 개념이 적용되어 레이아웃이 한결 모던해졌다고 한다. [결론 iOS 개발자가 되려면 SwiftUI를 필수로 공부해야한다..!]
  • import AppKit
    • 맥용 앱은 AppKit 프레임워크를 쓴다고 한다..!
    • SwiftUI.. : 이전에는 Appkit앱과 UIKit앱이 분리된 상태 였기에 UIKit 앱을 AppKit 앱으로 전화할 방법이 필요했는데, SwiftUI가 생기면서 플랫폼 대 통합..?의 시대가 온거 같다...
  • public final
    • swift에서 final 키워드를 왜 사용하는 것일까 : 스위프트는 클래스의 상속을 지원한다. final 키워드를 사용함으로서, 해당 클래스에서 하위 클래스로의 상속 또는 상속에 따른 재정의가 될 필요가 없다고 판단되는 경우 사용함으로서 상속을 방지하는 용도이다.
    • final 키워드를 적용이 성능에 미치는 영향 : 기존의 방법?은 오버라이딩한 메소드를 실행 시점에 어떤 메소드를 실행할지 결정하는 반면, final 키워드가 적용된 메소드는 컴파일 시점에 어떤 메소드를 실행할 지 결정할 수 있고 선언된 요소들은 직접호출 되기에 빠르다고 한다.
  • internal 과 private
    • 접근제어 : 특정 코드의 접근을 다른 소스파일이나 모듈에서 제한하는 것, 접근 제어를 함으로써 특정 코드의 세부적인 구현을 감추고 딱 필요한 만큼 공개해 다른곳에서 사용할 수 있도록 합니다.
    • internal : 기본 접근 수준, 소스 파일이 속해 있는 모듈 어디서든 쓸 수 있음, 그 모듈을 가져다 쓰는 외부 모듈에서는 접근 불가
    • private : 그 기능을 정의하고 구현한 범위 내에서만 허용 → Constraint 파일에서만 사용가능함..!

 

3. ConstraintItem 파일

  • 이것이 뭐하는 파일이냐? : 뭔가 같은지 판단해주는 거 같은데... (뭐하는 파일인지 더 알아봐야할거 같다)
  • Equatable

  • 사실 전에 수빈이가 이런것을 쓰는걸 봤는데 생각나는 김에 알아보겠습니다!
    • Equatable은 프로토콜입니다.
    • 값이 동일한지 어떤지를 비교할 수 있는 타입
    • Equatable 프로토콜을 준수하는 타입은 등로 연산자(==) 또는 같지 않음 연산지 ( !=)를 사용하여 동등성을 비교할 수 있습니다. 스위프트 표준 라이브러리의 대부분 기본데이터 타입은 Equatable을 따릅니다.
    • 아래의 func을 사용해서 Equatable이 아닌 클래스들을 비교할 수 있다고 합니다! (데이터 타입들은 Equatable을 채택하고 있지만, 클래스들은 Equatable 프로토콜을 준수하고 있지 않기에 클래스가 같은지 비교를 할려면 아래의 식을 사용해야합니다..!

 

4. ConstraintRelation 파일

  • 이것이 뭐하는 파일이냐? : relation을 정의한 파일로, equal, lessThanOrEqual, greaterThanOrEqual 3가지 case를 나눠주는 파일..! enum으로 관리

 

5. ConstraintAttributes 파일 (ConstraintItem 파일의 attribute를 담당)

  • 이것이 뭐하는 파일이냐? : layoutAttribute를 관리하는 파일 , left,top,bottom, width, height, centerX, centerY 등등 큰 분류 안에 나눠서 요소들을 작은 분류로 나누고 있다.

 

 

6. LayoutConstraintItem 파일 ( ConstraintItem 파일의 layoutConstraintItem)

  • 뭐하는 파일이냐? :
  • prepare() :
  • superview() :
  • constraints() :
  • add() :
  • remove() :
  • constraintsSet() :

 

7. ConstraintView 파일 (LayoutConstraintItem 파일의 superview)

  • 뭐하는 파일이냐 ? : 별칭 지정해주는 파일

 

  1.  

댓글