본문 바로가기

전체 글

(97)
[Swift 문법] Optional type Closure와 @escaping ✳️ 발단 [Swift] Escaping Closure(탈출 클로저) @escaping을 붙이지 않으면 스코프 밖의 변수인 클로저에 파라미터로 전달받은 클로저를 할당 불가능하다고 알고 있었는데 아래와 같은 코드가 잘 기능하는 것을 발견했다. @escaping을 붙이지 않았는데 어떻게 할당이 되었을까요? (탈출 클로저에 대한 설명은 위 티스토리 참조 ^__^) private var leftButtonClosure: (() -> Void)? @discardableResult func leftButonAction(_ clousure: (() -> Void)? = nil) -> Self { self.leftButtonClosure = clousure self.leftButton.addTarget(self, ac..
[MVVM] Closure를 이용한 MVVM 구현(With SearchController, Throttle) ✳️ Overview 📌 시연 영상 미리 보기 📌 기능 검색을 통해 깃허브에 존재하는 repository를 조회할 수 있도록 함 셀을 누르면 해당 repo의 ID가 alert로 등장 검색어가 바뀌고 minimumDelay만큼의 시간이 지나야 검색 수행 📌 Closure를 통한 MVVM 구현 특정 라이브러리 없이 Closure를 통하여 MVVM을 구현한 샘플 프로젝트입니다. 📌 Throttle(Custom Class)를 이용한 검색 지연 기능 Throttle이라는 클래스를 통해서 SearchController의 검색어가 바뀌고 minimumdelay만큼의 시간을 기다려야 검색이 실행되도록 했습니다. ✳️ Flow : 앱 실행으로부터의 흐름 앱이 실행되는 플로우를 따라 코드를 분석해 보았습니다! 1️⃣ Sc..
[Swift 객체지향] 2 - 구조체와 클래스의 차이점 ✳️ 구조체와 클래스의 공통점과 차이점 📌 구조체와 클래스의 공통점 프로퍼티 정의 : 값을 저장 메서드 정의 : 기능을 실행 서브스크립트 문법 : 프로퍼티에 접근 가능 이니셜라이저 : 초기화 될 때의 상태를 지정 가능 익스텐션 : 정의 이후 기능 확장 가능 프로토콜 : 특정 기능 실행을 위해 채택 가능 📌 구조체와 클래스의 차이점 클래스만 상속 가능 클래스 인스턴스에만 타입캐스팅 가능 클래스 인스턴스에만 디이니셜라이저 사용 가능 클래스 인스턴스에만 참조 횟수 계산이 적용 이러한 차이점은 구조체와 클래스가 각각 값 타입과 참조 타입이라는 점에서 온다. ✨ 값 타입과 참조 타입 값 타입을 전달 인자로 사용하면 값이 직접 복사되어 전달되고, 참조 타입을 전달 인자로 사용하면 값이 저장되어 있는 주소가 전달된다..