전체 글61 Alert error 현재 뷰가 아닌곳에서 alert띄우려고 하고있어서, "whose view is not in the window hierarchy"라고 알려줌 왜냐 appDelegate나 sceneDelegate는 뷰가 아니라서 띄우는거 자체가 불가능하다 그래서 present만 메인의 비동기처리로 보내 현재 씬의 최상단뷰에서 띄워줌 DispatchQueue.main.async { guard let viewController = (UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate)?.window?.rootViewController?.topViewController else { return } viewController.present(alert, a.. 2022. 10. 29. Closure 3/3 - 고차함수 고차함수(Higher-order Function) 고차함수란 다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수 스위프트의 함수 및 클로저는 일급시민이기 때문에 함수의 전달인자로 받을 수 있으며, 함수의 결과값으로 반환할 수 있다. 일급시민이란? 스위프트 함수와 클로저는 일급시민(일급객체, 일급함수 ...) 다음 조건을 충족하는 객체를 일급시민이라고 한다 변수에 저장할 수 있다. 매개변수로 전달할 수 있다. 리턴값으로 사용할 수 있다. map let winNumbers = makeLottoNumberCollection.intersection(Set(myLottoNumbers)).map{String($0)} 정의 Returns an array containing the results of.. 2022. 10. 29. Closure 2/3 Closure? vs. Function Closure Expression Capture Escaping / Non-Escaping Closure AutoClosure swift 5.7 Capture 클로저가 매개변수나 지역변수가 아닌 주변 외부의 context를 사용하기 위해 주변 외부의 context를 참조하는 것 (Capturing by reference) 클래스 내부에서 클로저를 쓸 때 self를 써야함 🤔 왜? 그럼 클로저에서 클래스의 프로퍼티를 불러줄 때 클로저는 “애는 어디에서 온 아이야?”라고 묻는 것과 같음 자신을 담고있는 클래스일 수도 있고, 이름이 같은 매개변수일수도있고, 다른 클래스에서 데려온 프로퍼티일 수도 있으니까 명시적으로 클래스 내부에 self를 붙여 “음~ 얘는 니가 있는 클.. 2022. 10. 29. Closure 1/3 어떠한 기능을 하는 이름있는 코드블럭 -> 함수 어떠한 기능을 하는 이름없는 코드블럭 -> 클로저 목차 Closure? vs. Function Closure Expression Capture Escaping / Non-Escaping Closure AutoClosure swift 5.7 Closure 클로저란 어떤 기능을 하는 코드를 하나의 블럭으로 모아놓은 것이다. 선언할 당시의 환경을 기억했다가 나중에 호출 될 시 원래의 환경에 따라 호출되는 코드블럭이다 함수는 이름있는 클로저(feat. 공식문서) 1. 전역함수는 이름이 있고 값을 캡처하지 않는 클로저 함수 == 글로벌 스코프(전역) 2. 중첩함수는 이름이 있고 둘러싸는 함수에서 값을 캡처할 수 있는 클로저 메서드 == 형식 내부(클래스, 구조체, .. 2022. 10. 28. 이전 1 2 3 4 5 ··· 16 다음