본문 바로가기

Swift27

@escaping에 관하여 @escaping 함수를 파라미터로 받는 함수가 있다고 한다. ex) func doSomething(completion : () -> ()) { print( "start" ) DispatchQueue.main.asyncAfter( deadline : .now() + 10{ completion() } print( "end" ) } 이 함수는 error가 발생한다. 왜냐하면 함수의 실행흐름이 끝나고 나서 completion이 실행되기 때문이다. 이렇게 non-escaping closure 형식은 함수 내에서 모든 실행을 맞춰야 한다. 하지만 파라미터 앞에 @escaping을 붙여준다면 모든 함수가 종료되고 나서 10초 후에 completion이 실행된다. 여기서 "@escaping을 붙여준다면 파라미터로 받.. 2022. 8. 25.
Class와 Struct -class와 struct의 차이에 관한 질문이 정말 많다. 이 질문의 목적은 단순하게 class와 struct의 특성차이, 장*단점 등에 관해 이해하는 것이 아니라, class와 struct에 대해 정확하게 이해하여 어떤 상황이 주어졌을 때 적절하게 사용하여 프로그램 성능을 개선할 수 있는 지가 질문의 요점이라고 생각한다. -struct는 class와 다르게 상속이 불가능하지만 상속을 제외하면 class와 기능이 유사하다. -struct과 class는 객체 지향 프로그래밍을 위한 필수요소로 추상화에 이용된다. -오늘은 두 가지의 개념에 대해서 deep diving해 볼 것이다. Class -class는 청사진으로 어떤 집단의 속성과 행위를 정의해 놓은 것이다.(속성과 행위는 property와 metho.. 2022. 7. 4.
getter와 setter 그리고 willSet과 didSet -get과 set은 연산 프로퍼티로 클래스, 구조체, 열거형에서 사용된다. 저장 프로퍼티와 다르게 저장공간을 갖지 않고, 다른 저장 프로퍼티의 값을 읽어 연산을 실행하거나, 프로퍼티로 전달받은 값을 다른 프로퍼티에 저장하는 역할을 한다. 또한 연산 프로퍼티는 값을 저장하지 않기 때문에 타입추론이 불가능하다. 따라서 선언할 때 var와 타입 어노테이션을 통해 자료형을 명시해주어야 한다. -get은 읽기 전용으로 리턴값이 있고, set은 파라미터로 받은 값을 조건에 맞게 연산해준다. 여기서 set의 파라미터명은 생략해도 되고 우리가 파라미터로 접근할 때 newValue라는 set에 지정해놓은 이름으로 사용할 수 있다. -willSet과 didSet은 observer property로 프로퍼티의 값을 관찰하고.. 2022. 7. 1.