반응형 프로그래밍304 @escaping 뭔지도 모르고 엄청 썼군... ㅋㅋ 함수의 전달인자로 전달한 클로저가 함수 종료 후에 호출될 때 클로저가 함수를 탈출(Escape)한다고 표현. 클로저를 매개변수로 갖는 함수를 선언할 때 매개변수 이름의 콜론(:) 뒤에 @escaping키워드를 사용하여 클로저가 탈출하는 것을 허용한다고 명시. //@escaping 예시 func requestSchoolGroupList(code: String, completionHandler:@escaping Result) { 비동기 작업을 실행하는 함수들은 클로저를 컴플리션 핸들러(Completion handler)전달인자로 받는데 비동기 작업으로 함수가 종료되고 난 후 호출할 필요가 있는 클로저를 사용해야 할 때 탈출 클로저(Escaping Closure)가 필요하다.. 2020. 11. 12. Swift 클로저, 다시 한번 정리 클로저를 얼마나 다양하게 표현할 수 있는지 보자 클로저는 매개변수와 반환 값의 타입을 문맥을 통해 유추할 수 있기 때문에 매개변수와 반환 값의 타입을 생략할 수 있다. 클로저에 단 한 줄의 표현만 들어있다면 암시적으로 이를 반환 값으로 취급한다. 축약된 전달인자 이름을 사용할 수 있다. 후행 클로저 문법을 사용할 수 있다. 스위프트의 클로저는 C언어나 Objective-C의 브록(block) 또는 다른 프로그래밍 언어의 람다(lambda)와 유사, 클로저는 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 말하며 함수와 비슷하며 함수 역시 클로저의 한 형태. 클로저의 세 가지 형태. 이름이 있으면서 어떤 값도 획득하지 않는 전역함수의 형태 이름이 있으면서 다른 함수 내부의 값을 획득할 수 있는 중첩.. 2020. 11. 12. @objc Swift로 된? 진행했던 예전의 소스를 훑어보면서 눈에 띄면서 완전히 이해가 되지 않는 부분들을 파고 파고 파고 파고 들어가보기로 했는데 그중 무심하게 사용했던 @objc에 대해서 한번 찾아보니 많은 내용은 각설하고 내가 이해하고 싶은 것만 정리를 하자면 다음과 같다. @objc의 역할은 Objective-C측에서 Swift코드의 심볼을 파악 할 수 있게 해주는 용도. 즉, Swift프로젝트에서 Objective-C모듈을 병행 사용한다면, 반대로 Objective-C 프로젝트에서 Swift모듈을 병행사용할 경우 해당 메서드가 Objective-C 심볼 코드라는 것을 명시하기 위해 사용한다고 한다. 그런데 이럴 경우 바이너리의 용량이 커지는 단점이 있으니 최근에는 @objc보다는 @objcMembers라.. 2020. 11. 12. Swift의 where절 SQL에 익숙한 사람들은 where절을 아마도 그렇게? 생각할 것이다. 그래서 선입관이나 고정관념은 무서운 것이다. 항상 조심하고 경계하자. 책에 의하면 Swift으 where절은 특정 패턴과 결합하여 조건을 추가하는 역할을 한다고 되어 있다. 어떤 조건을 더 추가하고 싶을 때나 특정 타입에 제한을 두고 싶을 때 다양한 용도로 사용할 수 있다. 주 용도는 다음과 같다. 패턴과 결합하여 조건 추가 타입에 대한 제약 추가 if let index = navigationController?.viewControllers.index(where: { $0.isKind(of: ListViewController.self) }) { self.navigationController?.viewControllers.insert(.. 2020. 11. 12. Swift ForEach 사용 예 별 내용이 있는건 아니지만, 시간 날 때마다 한번씩 훑어 보면서 머리속에 인식시키는 가장 좋은 방법(나에게만) 정리하면서 포스팅 하기, 그런데 살짝 고민스러운게 내용이 너무 부실한데... forEach, navigationController의 viewControllers 수 만큼 순환하면서 목적하는 바를 기술한다. @IBAction func onShowList() { navigationController?.viewControllers.forEach { if $0.isKind(of: ConsentLetterListViewController.self) { navigationController?.popToViewController($0, animated: true) return } } } 2020. 11. 12. OCP, 추이 종속성(transitive dependency) 추이 종속성이란 클래스 A가 클래스 B를 의존하고, 다시 클래스 B가 클래스 C에 의존한다면, 클래스 A는 클래스 C에 의존하게 된다. 이를 추이 종속성이라고 부르며 크래스 이외의 소프트웨어의 모든 엔티티(패키지, 컴포넌트 등)에도 동일하게 적용된다. 추이 종속성을 가지게 되면, 소프트웨어 엔티티는 '자신이 직접 사용하지 않는 요소에는 절대로 의존해서는 안된다' 는 소프트웨어 원칙을 위반하게 된다. 만약 클래스 의존성이 순환적(cyclic)이라면, 모든 클래스가 서로 의존하게 되는 문제가 있다. OCP는 시스템의 아키텍처를 떠받치는 원동력 중 하나다. OCP의 목표는 시스템을 확장하기 쉬운 동시에 변경으로 인해 시스템이 너무 많은 영향을 받지 않도록 하는 데 있다. 이러한 목표를 달성하려면 시스템을 컴포.. 2020. 11. 3. 이전 1 ··· 9 10 11 12 13 14 15 ··· 51 다음 반응형