본문 바로가기

분류 전체보기

(61)
Tuist , Swinject , Clean Architecture , MVVM - Coordinator Tuist가 뭔지 너무궁금해!! 로 시작해서 민소네님의 블로그를 보고 Swinject도 너무 궁금해!! 하다보니 모듈화를 해보고싶어!! 가 됬고 어떻게 계층을 나누고 모듈화를 해야하나 싶어서 일단 Clean Architecture를 이용해서 Domain과 네트워크 영역을 나눠보자!! 로 시작된 내 프로젝트... 시작한지는 생각보다 꽤 시간이 지났는데 평일에는 기초공부 , 주말에 지금 작성하고있는 프로젝트를 만들어야지로 시작했는데 이직기간과 맞물리다보니 평일에 기초공부와 과제 , 주말엔 면접 준비 및 개발과제 하다보니 조금씩 조금씩 미뤄줘서 이제야 완성해서 글을 쓰게 된다 해당 프로젝트를 만들면서 기존의 MVVM - Coordinator패턴으로 이뤄졌던 프로젝트에 Tuist , Swinject , Clea..
가상 메소드 테이블(Virtual method table) 가상 메소드 테이블이란? 가상 메소드 테이블은 동적 디스패치를 지원하기 위해 프로그래밍 언어에서 사용되는 메커니즘이다. 클래스가 가상 함수을 정의할 때마다, 대부분의 컴파일러들은 클래스에 숨겨진 멤버 변수를 추가하는데, 이것은 함수들에 대한 포인터들의 배열들을 가리킨다 이 부분을 이해하기위해 클래스에 함수가 동작하는 메모리 방식을 이해해야하는데 제가 그림툴을 잘 못써서 직접 적어서 보여드리면 그냥 주저리 주저리 설명을 드리면 클래스를 상속받은 변수 A에서 test라는 함수를 실행을 시키게되면 데이터영역에 클래스의 함수를 찾아가고 그 함수는 코드영역의 메모리 주소값을 찾아가 코드를 실행시키는 과정이 일어난다. 자세한 설명이 필요하다면 다른자료 or 앨런님의 강의를...! 그럼 본론으로 돌아가 가상 함수 테..
Restful API 에서 Rest는 뭐의 줄임말일까? https://tibetsandfox.tistory.com/19 REST(Representational State Transfer)란? REST란? REST는 Representational State Transfer의 줄임말로 애플리케이션 개발의 *아키텍처 중 하나입니다. (*아키텍처 : 애플리케이션을 설계, 제작하는데 사용하는 패턴과 기술의 총칭) 직역하자면 '대표 tibetsandfox.tistory.com https://www.redhat.com/ko/topics/api/what-is-a-rest-api REST API(RESTful API, 레스트풀 API)란 - 서버, 구현, 사용법 REST API(RESTful API)란 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이..
Hashable , Equatable , Identifiable https://developer.apple.com/documentation/swift/hashable Apple Developer Documentation developer.apple.com Hashable Hashable을 알기전 해쉬값 (Hash Value)을 알아야한다 그래서 해쉬값이란? -> 데이터를 간단한 숫자로 변환한 것 자세히 설명하면 : 원본 데이터를 해쉬 함수 (hash function)을 사용하여 64bit의 Int값으로 변환한 것이다. public protocol Hashable : Equatable { *// Hashable Protocol의 정의* var hashValue: Int { get } func hash(into hasher: inout Hasher) } 그렇다면 Hash..
프레임워크와 라이브러리 차이점 프레임워크 특징 정해진 규칙을 개발자가 따라야한다 제어의 역전 (Inversion of Control) 이 일어난다. 개발을 편하게 하기 위해 사용한다 -> ex) UIKit 라이브러리 특징 개발자가 코드를 제어할 수 있다.(언제 요청하고 , 응답받고 , 처리할 지 모두 주체가 결정한다.) 라이브러리는 개발자가 개발하는데 필요한 것 들을 모아둔것 단순 활용가능한 도구들의 집합을 이야기한다. -> ex) Alamofire 개념적으로 보았을때 둘의 가장 큰 차이는 엄청 심플하다 누가 누구를 컨트롤 하는가? 내가 코드를 컨트롤하냐? -> 라이브러리 누군가 만든 규칙을 따르냐 -> 프레임워크
Tuist 3.x 라이브러리 등록 방법 Tuist 관련 자료들을 보면 모두 버전이 2.x 타겟으로 되어있어 사용할때 디플리케이트 된 함수라고 떠서 머리가 조금 아프다. 그래서 이번에 직접 Doc를 보면서 Tuist 의 사용법을 공부했다. 기존이랑 많이 변하게된 부분이 라이브러리를 사용하는 부분인데 기존의 코드와 다르게 Dependencies 파일을 Tuist에 만들어준 후 SPM으로 사용할 라이브러리를 등록한다. import ProjectDescription let dependencies = Dependencies( swiftPackageManager: .init([ .remote(url: "https://github.com/ReactiveX/RxSwift.git", requirement: .upToNextMajor(from: "6.5.0")..
Tuist 모듈화 공부 4편 클린아키텍처 Tuist를 사용해보자 라는 관점에서 시작됬던 프로젝트가 하나씩 공부하다보니 Tuist를 제대로 사용하기 위해 모듈화가 필요하다 생각이 들었고 모듈화를 공부하다보니 자연스럽게 clean architecture를 접하게 되어 기존의 프로젝트를 clean architecture로 변경하는 과정을 거친후 모듈화를 진행을 할려고한다. 그렇다면 clean architecture가 무엇인가? 내가 설명을 기깔나게 잘한다면 정말 좋겠지만 설명을 못하기에 잘 정리가되어있는 글 들을 첨부한다. https://k-elon.tistory.com/38 Clean Architecture 란 ? 안녕하세요 ! 국산 엘런 입니다 :) Robert C Martin(Uncle Bob) 형님이 블로그에 기재하시면서 화재가 된 것이 Cl..
ViewModel에 Driver를 사용하면 안티패턴? 지난번 면접 질문들을 회고하고 복기하는중 생각이 난 질문이 있는데 MVVM Input Output 패턴을 사용하고있고 Input , Output값을 Driver로 전달하고 있기에 (메인쓰레드에서 사용성을 보장하기위해) ViewModel에서 RxCocoa를 import하고 있는데 RxCocoa를 import를 하고 있는게 안티패턴이라고 한다 (설명을 해주시기에 RxCocoa는 View와 관련된 라이브러리 이기에 안티패턴이라고 한다) 그래서 고민을 면접 당시에는 뭔가 생각이 잘나지 않아 아 그런가요 하고 넘어갔는데 지금와서 생각해보니 조금 이상한게 있다 RxSwift의 Github에 나오는 RxCocoa 소개글 RxCocoa: Provides Cocoa-specific capabilities for gene..