분류 전체보기 (63) 썸네일형 리스트형 Swift WMO WMO란 Swift의 컴파일러 기술이고 전체 모듈 최적화의 성능 승리는 프로젝트에 크게 의존하지만 최대 2배 또는 5배까지 가능합니다. 전체 모듈 최적화는 -whole-module-optimization(또는 -wmo) 컴파일러 플래그로 활성화할 수 있으며 Xcode 8에서는 새 프로젝트에 대해 기본적으로 켜져 있습니다. 또한 Swift Package Manager는 릴리스 빌드에서 전체 모듈 최적화로 컴파일이 된다고합니다. 모듈은 Swift 파일의 집합이고 각 모듈은 배포단위로 컴파일이 된다 단일 컴파일에서 Swift 컴파일러는 모듈의 각 파일에 대해 개별적으로 호출이된다. 소스 파일을 읽고 구문 분헉을 한후 컴파일러는 Swift 코드를 최적화 , 코드를 생성 그리고 개체 파일을 생성합니다. 그리고 .. Tuist 모듈화 공부 Swinject 3편 적용기 Swinject를 공부한지 약 1일차 어제는 오전 코로나로인한 몸살 , 그 후에 잠깐 공부 그리고 T1 GenG 경기를 보니하루가 끝나 오늘부터 본격적으로 Swinject을 공부를 시작했다. Swinject의 가장 중요한 것은 OOP 에서 SOILD 중 D '의존성 주입'(DI : Dependency Injection) 를 도와주는 라이브러리 이고 기존의 내 프로젝트들에서 class ViewModel{ var network : NetworkProtocol init(network : NetworkProtocol){ self.network = network } } 이렇게 처리해줬던 부분들을 도와주는 라이브러라고 이해하면 편할것이다. 기존에 DI를 많이 접해보고 약 2주에 걸쳐 OOP 를 공부했을때 DI의 중.. 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.. 이전 1 2 3 4 5 6 7 8 다음