일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리팩토링
- 리펙터링
- MVVM
- RxCocoa
- swiftUI
- tableView
- ribs
- clean architecture
- map
- Clean Code
- 스위프트
- combine
- 애니메이션
- Refactoring
- UITextView
- ios
- rxswift
- uitableview
- collectionview
- Xcode
- swift documentation
- UICollectionView
- 리펙토링
- 클린 코드
- uiscrollview
- HIG
- Protocol
- Human interface guide
- Observable
- SWIFT
- Today
- Total
목록클로저 (6)
김종권의 iOS 앱 개발 알아가기
함수로 정의 vs closure로 정의 보통 코드를 작성하다가 중복 작업이 있을 때나 로직이 여러개가 들어갈 때, 하나의 일은 하나의 함수에서 하기 위해서 별도의 함수를 정의하여 그 함수를 호출하도록 구현 하지만 이렇게 함수를 만들때, 다른곳에서는 사용하지 않고 현재 위치에서만 사용하는 경우가 존재 // 리펙토링 전 func workA() { // A work // B work
Memory Leak이란? 메모리에 할당 되었지만, 절대 release되지 않고 reference되지 않는 것 이것을 참조할 수 없기 때문에 절대 release할 수 없는 상태 Retain Cycle이란? 생성자가 할당 해제된 후에도 인스턴스가 할당 해제되지 않도록 하는 reference 상 순환을 이루는 상태 둘 이상의 인스턴스가 서로에 대한 strong 참조를 보유할 때 발생 retain cycle이 발생하지 않는 케이스 UIView.animate 클로저 한 번만 실행된 다음 할당이 취소되므로 블록이 실행 될 때 애니메이션 블록의 strong 참조도 해제 UIView.animate(withDuration: 0.22) { self.view } DispatchQueue 클로저 해당 클로저가 외부의 변수를..
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..
1. 변수 1). 타입 어노테이션(type annotation) : 타입을 명시적으로 선언 - 런타임 에러 방지 ( 컴파일 에러로 대체) 1 var age: Int = 1234 // "Int"와 같이 콜론 뒤에 써주는 자료형을 타입 어노테이션이라 함 2). 변수 이름 - 스위프트에서는 모든 문자 및 이미지까지 사용 가능 1 2 3 var myValue = "ffas" var 123 = "ffas" var ♠ = "ffas" - 가독성을 위해 낙타와 같은 모양을 띄고 있다고 하는 Camel형으로 작성하는것을 일반적으로 함 var myValueMyStyle = 123 - 상수는 var 대신에 let으로 선언 3). Int사용 - Int8, Int16과 같이 명시적으로 할 수 있지만, 숫자를 안붙이고 Int만..
1. 정적 바인딩 언어 파이썬과 같이 데이터 타입 추론 기능이 있지만, 스위프트는 정적 바인딩 언어 let myValue = 24 let myValue : Int = 24 2. 프로토콜 자바의 인터페이스 기능과 동일 1 2 3 4 protocol myProtocol { var myValue : String { get } mutating func adjest() } 3. 튜플 함수나 메소드에서 두 개 이상의 값을 반환해야 한느 경우, 모아서 하나의 객체로 반환 1 2 3 4 func getItem() -> (Int, Int, Double) { return (1, 2, 3.5) } var myValue : (Int, Int, Double) = getItem() 4. 클로저(Closure) 함수를 1급 객체로..