MVC -> MVVM 변경하는 과정에서 클로저와 ARC관계에 대해 공부하고자 정리. - 내용: MVC, MVVM, closure, ARC, unowned, waek Model = Model // 정확하게 말하면 DataClass를 말한다. View = Controller + View // MVC에서 VC를 같이 사용. ViewModel // View를 위한(데이터)모델, 로직을 가짐. ⭐️ViewModel 사용자의 인풋(View에서 이벤트가 발생하면)을 받으면 Model의 데이터를 가지고 View에 전달해 주어 View(화면)이 변경된다. ViewModel은 일반적으로 class로 작성한다 why? class는 참조타입이고 struct는 값타입(데이터의 공유와 변경감지가 class보다 복잡할 수 있다...
안녕하세요. minuco입니다. 진짜 마지막! closure 가 간결해지는 순서를 알아볼 거예요 내장 closure인 sort를 예로 들겠습니다! Closure를 간결하게 우선 arry를 하나 만들고 sort 함수를 호출하는 과정을 축약해 보겠습니다. (sort함수는 기본적으로 오름차순으로 정렬된다.) var names = ["abcd","bacd","cabd","dabc"] // 형태: sort(by: (String, String) throws -> Bool) //1. 기본 형태 names.sort(by: {(lhs: String, rhs: String) -> Bool in // lhs(left hand side)왼쪽, rhs(right hand side)오른쪽. return lhs > rhs }) /..
안녕하세요, minuco입니다. :) 마지막입니다. 우리가 지금까지 공부했던 Closure는 Non_Escapin Closure입니다. 즉, 함수에서 파라미터로 전달될 때 일반적으로 함수가 반환되기 전에 실행되는 Closure입니다. Non-Escaping Closure 일반적인 Closure func showString(completion: () -> Void) { completion() // 실행하고 종료 } showString { print("a") } // 일반적인 Closure는 호출은 Function 안에서 종료된다. 클로저가 실행되는 순서를 보면, closure가 showString() 함수의 completion 인자로 전달되고, 함수 내부에서 closure type completion이 실..
안녕하세요 :) minuco입니다. Closure 왜 사용할까?? 클로저를 사용하면, 코드 중복 & 가독성 향상! : 비슷한 기능의 코드를 하나로 묶어서 재사용할 수 있다. : 함수나 메서드의 인자로 전달하는 코드를 간결하게 작성할 수 있다.(경량 문법) : 비동기 처리에도 용이! Closure 종류 Named Closure(함수)와 UnNamed Closure(익명함수) Named Closure는 func이라는 키워드가 붙고 함수라 부르고, UnNamed Closure는 Closure라 부른다. //1. function (named closure) func plus(a: Int, b: Int) -> Int { return a + b } //2. closure (unnamed closure) { (a: ..