Develop/Swift

    [Swift] cell indicator 색상 변경

    [Swift] cell indicator 색상 변경

    테이블 셀을 이용하다 보면 아래와 같이 inticator view를 이용할 때가 있습니다. 그런데 해당 화살표의 색상을 바꾸려고 검색을 해봤는데 대부분이 UIImage를 asset에 넣어 tint 색상을 바꾸는 내용들이였습니다. 그래서 여러 테스트를 해보다가 indicator view의 버튼( > 모양 )이 항상 last로 나오는 것을 알게 되었고 이를 코드로 변경이 가능했습니다. if let indicatorButton = self.subviews.compactMap({ $0 as? UIButton }).last { let image = indicatorButton.backgroundImage(for: .normal)?.withRenderingMode(.alwaysTemplate) indicatorBu..

    [iOS] Factory Method Pattern

    데이터 가공하는 일을 Interactor에서 작업을 하고 있었습니다. 그런데 해당작업을 하다보니 View까지 가는 로직에서 for문이 한 번 더도는 문제가 있었습니다. 가공하는 처리는 View에서 하는거보다 화면에 나타나기 전 로직에서 처리하는 것이 좋다고 생각은 했지만 만약 데이터가 무수히 많아질 경우에도 그게 맞는 것인가? 고민이 들었습니다. 그런데 해당 내용을 리뷰받던 도중 Factory를 내용을 알게 되었고 해당 내용을 학습하게 되었습니다. Factory Pattern 객체 생성을 위한 런타임 인터페이스를 정의하는데 사용되는 디자인 패턴입니다. 다양한 타입의 객체를 쉽게 만들 수 있게 도와주기에 펙토리리라는 이름이 붙여진 것 같습니다. protocol ContreateCreator { static..

    [iOS] 아키텍쳐 VIPER 패턴

    [iOS] 아키텍쳐 VIPER 패턴

    VIPER 구성도 항목 내용 View Presenter의 요청에 따라 표시하거나, 사용자 입력을 Presenter로 보내는 작업을 진행합니다. Presenter Interactor로부터 데이터를 가져오거나, View로 보내기 위한 데이터를 보내줍니다. 이외에도 다음 화면으로 전환을 하는 Router를 이용할 때, View의 요청을 받기도 합니다. Interactor Presenter의 요청을 받아 Entity 객체의 데이터를 가공하여 Output하는 로직 처리를 담당하고 있습니다. Entity 모델 객체입니다. Router(WireFrame) 화면 전환을 담당하며, 전환 시기(When)는 Presenter가 알고 있고 해당 부분은 어떻게(How)를 담당합니다. 이렇게 각자의 역할이 분할되어있어 해당 로직..

    [iOS] View Lifecycle

    [iOS] View Lifecycle

    View LifeCycle 구성도 어플리케이션이 실행하면서 ViewController들이 만들어지고 사라지며 화면을 띄우고 내리는 작업을 하는데, 이러한 과정들은 event에 의해 메소드가 호출됩니다. Init() storyboard를 통해 View Controller들을 만들 경우 ViewController 객체가 생성될 때 초기화 작업을 합니다. 이때 사용하는 메소드가 init() 입니다. 객체를 Byte Stream으로 바꾸어 디스크에 저장하거나 네트워크를 통해 전송하는 직렬화 작업을 하지 않는 이상 매개변수로 넘어오는 NSCoder 는 무시하셔도 무방합니다. 그런데 만약 View 내의 요소를 접근한다면 이는 아직 생성되기 전 상태이기에 에러가 발생합니다. 이외에도 init(nibName: bund..

    [iOS] Xcode Code Snippet

    [iOS] Xcode Code Snippet

    프로젝트를 진행하면서 해당 클래스나 구조체를 설명하는 주석을 적는 경우가 많았습니다. 그런데 매번 반복해서 적기보다 저장해서 사용할 수 있을까 찾아보던 도중 Code Snippet를 알게 되었습니다. /** # Class Description > # Method List - # Additional Info - */ 위처럼 예시 주석처리를 만든 후, 이를 code Snippet를 만들어봅니다. 이렇게 드래그를 하여 우클릭하면 Create Code Snippet를 할 수 있습니다. 이후 Command + Shift + L 키 를 누르면 등록한 Code Snippet를 사용할 수 있습니다.

    [Objective-C] message, location으로 매개변수 이름정하면 에러..

    [Objective-C] message, location으로 매개변수 이름정하면 에러..

    Swift Log 및 회사 내 로그 관련 기술을 자주 이용하게 되는데 swift 외에도 objc에서도 사용을 해야하기 때문에 define으로 정의하여 이용할 때가 있습니다. #define testLog(type, code, message, location) [[Logger shared] unityLogWithType:type errorCode:code message:message location:location]; 이러한 형태로 @objc class를 생성하여 쉽게 Objc에서도 이용할 수 있겠지 라는 생각으로 정의한 결과! ..? 왠 에러가 뜹니다.. 심지어 저게 뭐지 해서 계속 삽질한 결과! message, location이란 단어로 매개변수에 넣으면 안되는 에러였습니다 ㅎㅎ.. (저렇게 나오니 왜그..