일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Refactoring
- tableView
- 클린 코드
- Clean Code
- RxCocoa
- Observable
- 리펙터링
- 스위프트
- UICollectionView
- Protocol
- swiftUI
- clean architecture
- MVVM
- swift documentation
- ios
- uiscrollview
- UITextView
- ribs
- HIG
- combine
- map
- 리팩토링
- Xcode
- uitableview
- Human interface guide
- rxswift
- 리펙토링
- collectionview
- 애니메이션
- SWIFT
- Today
- Total
목록closure (5)
김종권의 iOS 앱 개발 알아가기
함수로 정의 vs closure로 정의 보통 코드를 작성하다가 중복 작업이 있을 때나 로직이 여러개가 들어갈 때, 하나의 일은 하나의 함수에서 하기 위해서 별도의 함수를 정의하여 그 함수를 호출하도록 구현 하지만 이렇게 함수를 만들때, 다른곳에서는 사용하지 않고 현재 위치에서만 사용하는 경우가 존재 // 리펙토링 전 func workA() { // A work // B work
@autoclosure 함수에 argument가 전달될 때 closure가 자동으로 생성되게끔 하는 키워드 함수의 argument에 closure를 넘길 때, block으로 감싸지 않고 그냥 넘겨도 되게끔하는 키워드 ex) @autoclosure 사용 class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.someFunction(print("this is closure")) } func someFunction(_ someArgument: @autoclosure () -> ()) { print("start") someArgument() print("end") } } /* start this ..
Closure Closure(폐쇄): 클로저는 코드에서 전달 및 사용할 수 있는 2가지의 자체 기능을 가진 블록 정의된 컨텍스트에서 모든 상수 및 변수에 대한 참조를 캡쳐하고 저장 가능 캡쳐: 자신의 블록 외부에 있는 값을 참조하는 것 // ex) 캡쳐: incrementer() 함수 블록에서 runningTotal과 amount인수를 참조 func makeIncrementer(forIncrement amount: Int) -> () -> Int { var runningTotal = 0 func incrementer() -> Int { runningTotal += amount return runningTotal } return incrementer } Closure는 실행 순서 제어가능 클로저는 호출할 ..
1. 클로저표현식 : 익명함수, 주변 환경으로부터 값을 "캡쳐"(휘발성인 지역변수의 값이 저장되는 것)할 수 있는 경량 문법 즉, 클로저라는 것은 리턴된 타입(어떤 함수의 종료)을 참조할 때, 함수가 이미 종료된 시점에서 특정 변수를 참조하는 것 - 클로저표현식은 익명함수로 생각하면 편함 - func키워드, 함수이름 제거한 후 나머지만 표현 1) 기본 사용법 // 대입 후 실행 let a = { (v1: Int, v2: Int) -> Void in print("value1 = \(v1), value2 = \(v2)") } a(1,2) // 바로 실행 ({ (v1: Int, v2: Int) -> Void in print("value1 = \(v1), value2 = \(v2)") }) 2) 생략 // 정..
1. 함수 - 인자레이블 : 매개변수 이름 1 2 3 4 5 6 7 8 9 10 func myFunc(myValue: Int, myValue2: Int) -> (String, Int) { var ret : (String, Int) = (String(myValue + myValue2)!, myValue1) return ret } // myValue, myValue2가 인수레이블 myFunc(myValue: 123, myValue2: 13) // 함수호출방법 1 myFunc(myValue:myValue2:)(123, 13) //함수호출방법 2 - 위에서 함수 이름은, myFunc(myValue:myValue2) - defer 블록 : 함수안에서 return을 만나기 전에 defer블록을 만나게 되면, ret..