본문 바로가기

전체 글

(61)
Tuist 모듈화 공부 Swinject 2편 잡담 Tuist를 공부하던와중 민소네님의 블로그를 보고 모듈화를 결심하게 되었고 모듈화를 공부하다보니 DI관련 라이브러리인 Swinject 알 게 되었고 Swinject에 대해 하나씩 공부하다보니 가볍게 사용하기에는 쉬운데 어떤 관점에서 모듈화를 하고 어떤관점에서 의존성을 주입해줘야하는지를 공부하다보니 생각보다 쉽게 시작이 되지않아 공부중이다 그러던 와중 코로나확진까지... ​Swinject의 정리가 완료되면 업데이트를 진행해볼려고한다. 우선 필요한 순서는 내가 모듈화를 할려는 App의 전체적인 구성도를 그리고 , 거기에 따른 Swinject 사용법 공부 , 관계도구성을 만들어야한다. 대략 이런 형태로 이루어져있고 필요에따라 NetworkServiceProtocol 과 필요한 아이템들을 상속받는 형태로 이루어..
Static Dispatch vs Dynamic Dispatch Static Dispatch , Dynamic Dispatch Static Dispatch 컴파일시 호출될 함수를 결정하기에 성능상 이득 Dynamic Dispatch 런타임에 호출될 함수를 결정하기에 성능상 손해 Class -> Dynamic Dispatch 이유 ovveride 를 통해 함수가 변경 될 수 있기 때문에 Struct -> Static Dispatch 이유 ovveride 를 통해 함수가 변경 될 수 없기에 항상 동일한 함수가 호출 Protocol -> Dynamic Dispatch 이유 해당 프로토콜을 선언을 해주는곳에서 각각 다른 함수로 동작하기에 알 수 없음 자세한 예제들은 아래의 코드를 보면서 하나씩 진행해보면 좋습니다! import Foundation protocol commom..
객체지향 프로그래밍 OOP (3) 드디어 객체지향 프로그래밍 3번째 글을 쓸 시간이 왔습니다 ㅜㅜ 한동안 개발과제 처리한다고 너무 바빠서 따로 공부한것을 글을 정리할 시간이 부족해 꽤 시간이 지난뒤 OOP에 대한 글을 마저 쓰게된다. 지금까지 공부했던것을 잠깐 정리하자면 절차지향 프로그래밍 -> 객체지향 프로그래밍으로 프로그래밍이 발전되어왔고 객체지향 프로그래밍에서 상당히 오랜시간 상속이 중요한 키워드로 학습이 이뤄졌지만 요즘은 상속보다는 추상화쪽에 좀 더 각광을 받는다고한다. 그리고 객체지향프로그밍의 특징중하나가 정보의 은닉화인데 개발자가 원하는대로 접근제어 연산자를 통해 외부에서의 접근을 막을수있고 Swift에서는 open public internal fileprivate private 순으로 컨트롤 할 수 있다. OOP를 공부하게 ..
Tuist , 모듈화 공부 기록기 기존 창업프로젝트 , 회사 프로젝트 모두 1인으로 개발하지만 Mac 회사용 / 개인용 2대를 사용하기 때문에 아주 가끔씩 git에서 Pull 로 프로젝트를 업데이트 하거나 집에서 작업하던것을 merge 할려고하면 xcodeproj, wcworkspace 에서 빌드에 오류가 생기게 되고 그 빌드 오류를 해결하기위해 상당히 귀찮았던 경험들이 많아 좋은 방법이 없을까 찾던도중 XcodeGen을 알게되었고 XcodeGen에 대해 찾다보니 좀더 사용성이 좋은 Tuist알게 되어 Tuist에 대해 공부를 해볼려고한다. 오픈소스로 이뤄져있고 https://github.com/tuist/tuist GitHub - tuist/tuist: 🚀 Create, maintain, and interact with Xcode pr..
TableView Reusable AppStore Clone App을 만들던중 버전에서 더보기 기능을 만드는데 TableView에서 더보기를 클릭하고 아래로 내려갔다 돌아오면 초기화가 되어있거나 의도치 않은부분이 더보기가 눌러져있거나 하는 문제가 발견되어 뭐가 문제인지 곰곰히 생각을 해보니 Cell 의 재사용 관련된 문제였다 위의 사진을 보면 무슨말이냐 TableView를 그릴때 Cell을 아래로내려갈때마다 새로그리는게 아니라 기존에 있던 Cell을 재사용 한다 라고 이해하면될것같다 그래서 내가 특정 Cell에만 Background 0번째 Cell에 만 주더라도 0번째 Cell 에서만 background 색상이 바껴있는것이 아닌 다른 cell에서도 색상이 바뀌는 현상을 발견하게 된다. 제가 개발했을때는 TableView 의 Cell 에 ..
객체지향 프로그래밍 OOP (2) https://coding-rengar.tistory.com/27 객체지향 프로그래밍 OOP 코딩을 배우고 , 여러가지 지식을 배우면서 엄청 많이 들어본 단어 OOP (객체지향) 분명 객체지향을 공부했지만 남들에게 객체지향을 설명해봐!라고 하면 원활한 설명을 하지 못하는 게 내 현실 coding-rengar.tistory.com 객체지향 프로그래밍을 다시 공부한지 벌써 3일 정도 소요가 되었고 지금의 속도로 공부를 한다면 최소 일요일? 정도는 되야 블로그 글을 전부다 작성 할 수 있을 것 같지만 개인 이슈가 생겨 OOP공부 할 시간이 줄어들어 생각보다 더 오랜 시간동안 공부가 진행 될것같다. 우선 지난번에 마무리 하지 못한 캡슐화부터 시작할려고한다. Encapsulation (캡슐화) 객체의 속성(dat..
객체지향 프로그래밍 OOP 코딩을 배우고 , 여러가지 지식을 배우면서 엄청 많이 들어본 단어 OOP (객체지향) 분명 객체지향을 공부했지만 남들에게 객체지향을 설명해봐!라고 하면 원활한 설명을 하지 못하는 게 내 현실이기에 이번 기회에 다시 한번 정리하는 시간을 가지려고 한다. 객체지향에 대해 복습을 하겠다고 마음을 먹고 여러 자료들을 찾아보니 머리가 띵한느낌 분명 과거에 공부했을 때도 열심히 OOP에 대해 공부했다고 생각을 했는데 시간이지나 다시 복습 겸 공부를 하니 그때 이해한 것들이 쉬운 내용이 아님에도 불구하고 음 그런 느낌이군 하고 넘겼던 부분들도 발견하게 되고 더 많은 강의들을 보다 보니 잘 못 공부했던 부분들이 보이게 되어 상당히 의미 있는 공부가 되었다. 학창시절 객체지향 프로그래밍에 대해 수업을 하면 단 한 시간이..
절차적 프로그래밍 PP 코딩을 배우고 , 여러가지 지식을 배우면서 엄청 많이 들어본 단어 OOP (객체지향) 분명 객체지향을 공부했지만 남들에게 객체지향을 설명해봐! 라고 하면 원활한 설명을 하지 못하는게 내 현실이기에 이번 기회에 다시 한번 정리하는 시간을 가질려고 한다. 우선 객체 지향을 공부하기전 객체지향이 탄생하게된 이유와 배경을 먼저 공부해볼려고한다. 여기서 앞서 절차적 프로그래밍과 구조적 프로그래밍이라는 단어가 나오는데 각각에 대해 공부를 하고 어떤 이유로 OOP 까지 넘어 왔는지 연관지어 공부해보겠습니다. 절차적 프로그래밍 자료 위키백과 https://ko.wikipedia.org/wiki/%EC%A0%88%EC%B0%A8%EC%A0%81_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0..