layoutSubViews() view의 값을 호출한 즉시 변경시켜주는 메서드 호출되면 해당 View의 모든 SubView들의 layoutSubviews()이 연달아 호출된다 비용이 많이 드는 메서드이고, 때문에 직접 호출하는 것은 지양된다 아래의 경우에서는 자동으로
API를 활용해 검색기능을 구현하던 중 통신이 2번 되는 현상이 있었다. 셀을 누르면 네트워크 통신을 하도록 구현해놓았는데, 왜인지 통신이 2번 된다. 왜그럴까?위 사진에서 post는 input.itemSelected에 이벤트가 들어오면 fetchSearchResult
오늘은 Alamofire에 대해서 알아보려고 한다. 사실 야곰아카데미에서는 오픈소스, 라이브러리를 사용하기보단 원리를 이해하고 기초를 알길 권장하기 때문에 한번도 사용해본적이 없었다. 근데 Alamofire가 채용공고에 자주 등장하기도 하고 어떤라이브러리인지 궁금해서
프로젝트를 구현하면서 코디네이터 패턴에 대해 알게되었다. MVVM구조로 역할분리를 하는데 성공했다고 생각했는데, 확장성과 프로젝트 규모의 증가 등의 측면에서 이점이 있을것같아 하이웨이 인포에 적용해보았다. 사실 코디네이터 패턴 없이도 앱은 잘 작동한다. 다만 몇가지 아
이번 포스트는 RxSwift 코드 테스트에 대한 이야기 입니다. 앱을 MVVM으로 구성했더니 테스트에 용이한 구조가되었습니다. MVVM 아키텍처의 또 다른 이점은 코드의 테스트 용이성 증가라고 할 수 있는데요, 오늘은 특히 뷰 모델에 대한 단위 테스트를 만든 경험을 공
MVVM + Clean Architecture + RxSwift 도입 프로젝트 소개 MVVM Clean Architecture RxSwift 아키텍처 한눈에 보기 마무리
앱 전체 화면 회전을 설정하는 방법 Project Target에서 설정해주면 Info.plist에 자동으로 반영된다 특정 뷰 컨트롤러를 세로고정 하는 방법 방법1. AppDelegate 사용하기 (비추) application(_:supportedInterfaceO
When the JSON you use contains a homogeneous array of elements, you add a conformance to the Codable protocol on the individual element's type. To dec
✔ ARC 자동으로 메모리를 관리해주는 친구 객체에 대한 참조 카운트를 관리하고 0이 되면 자동으로 메모리를 해제한다 compile time에 실헹한다(run time에 계속 실행되는게 아님) retain cycle에 유의해야 함 ✔ retain, release re
‘디버깅’이라는 용어는 여러 다양한 것을 의미할 수 있지만 대부분의 경우 코드에서 버그를 제거하는 것을 의미합니다print문 찍어보기break point 걸어보기컴파일: 코드변환 / 컴퓨터 언어로 변환하는 과정 / low-level 언어로 변환빌드: 실행파일 생성 /
struct Formula { var operands: CalculateItemQueue? var operators: CalculateItemQueue// func result() -> Double {//// }}extension Double: C
클로저는 변수나 상수가 선언된 위치에서 참조를 획득하고 저장할 수 있다이를 산수나 변수의 클로징 이라고 한다. 여기에서 착안된 이름이다클로저의 3가지 형태1\. 이름이 있고 어떤 값도 획득하지 않는 전역함수의 형태2\. 이름이 있고 다른 함수 내부의 값을 획득할 수 있
\*@objc를 붙이는 이유?Swift4부터는 Selector 타입으로 전달할 메소드를 작성할 때 반드시 @objc 어트리뷰트를 붙여주어야 한다. 이는 Objective-C와의 호환성을 위한 것으로, Swift에서 정의한 메소드를 Objective-C에서도 인식할 수
궁금한점 야곰은 왜 재고수정 뷰컨을 Navigation Controller에 임베드 했을까 왜 재고수정 뷰컨은 Navigation Controller를 가지는가 Navigation Controller 에 Navigation Controller에 임베드된 뷰를 띄웠을때의