일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- map
- rxswift
- Human interface guide
- 리펙터링
- MVVM
- combine
- Observable
- swiftUI
- 스위프트
- 애니메이션
- 리팩토링
- UITextView
- tableView
- ios
- 리펙토링
- RxCocoa
- uitableview
- Refactoring
- SWIFT
- Xcode
- ribs
- uiscrollview
- Protocol
- HIG
- UICollectionView
- clean architecture
- collectionview
- 클린 코드
- swift documentation
- Clean Code
- Today
- Total
목록swift documentation (16)
김종권의 iOS 앱 개발 알아가기
Deinitialization deinitializer는 클래스 인스턴스가 해제되기 직전에 호출되며 직접 호출 불가능 deinit 키워드 class type에서만 사용 deinit deinit이 호출될 때까지 instance 메모리가 해제되지 않기 때문에 deinit안에서 호출된 인스턴스의 모든 속성에 접근 가능 deinit 사용 예시 Player클래스는 게임에서 플레이어를 안내하고, 각 플레이어는 지갑에 일정 수의 동전을 보관하는 상태이고 이 동전은 coinsInPurse로 정의 은행에서 coin의 허용량이 정해져있다면, 각 플레이어가 coin을 사용하고 게임이 끝난 경우 Bank에 coin을 반납하는 프로그램 class Player { var coinsInPurse: Int init(coins: I..
Method 메서드의 정의: 특정 유형과 관련된 함수 인스턴스 작업을 위한 특정 작업 Instance Method 특정 클래스, 구조, 열거 형의 인스턴스에 속하는 함수 class Counter { var count = 0 func increment() { count += 1 } func increment(by amount: Int) { count += amount } func reset() { count = 0 } } let counter = Counter() // 1 counter.increment() // 1 counter.increment(by: 5) // 6 counter.reset() // 0 Self Property 클래스 내에서 self의 의미: 자체 인스턴스 메서드 내에서 현재 인스턴스를..
Properties 내부에 property가 var로 선언되어도, copy of value인 struct는 인스턴스를 let으로 할 경우 변경 불가 내부에 property가 var로 선언되고, reference of value인 class는 인스턴스를 let으로 할 경우 변경 가능 Lazy stored property 상수 속성은 초기화가 완료되기 전에 항상 값을 가져야 하므로 lazy 선언 불가 ex) 불필요한 초기화를 피하기 위해 lazy stored property 사용 class DataImporter { var filename = "data.txt" } class DataManager { lazy var importer = DataImporter() var data: [String] = [] }..
Structures and Classes swift에서는 class의 인스턴스를 object라고 하지 않고, 기능에 가까운 언어이므로 "instance"라고 명명 Class에서만 있는 속성 상속 type casting: 런타임에 클래스 instance의 유형을 확인하고 해석 Deinitialzer는 클래스의 instance가 할당 된 리소스를 해제할 수 있도록 하는 기능 reference counting을 통해 한 클래스 instance에 대한 하나 이상의 참조를 허용 Structure와 Enum은 value type copy - by - value let hd = Resolution(width: 1920, height: 1080) var cinema = hd cinema.width = 2048 // c..
Enumerations enum은 value type Enum 네이밍: 복수가 아닌 단수형태이고 대문자로 시작 enum CompassPoint { case north case south case east case west } var directionToHead = CompassPoint.west CaseIterable case들의 사례를 모두 가져오고 싶은 경우 CaseIterable을 conform하여 구현 'allCases' 프로퍼티 사용 enum Beverage: CaseIterable { case coffee, tea, juice } let numberOfChoices = Beverage.allCases.count print("\(numberOfChoices) beverages available"..
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는 실행 순서 제어가능 클로저는 호출할 ..
print(_:separator:terminator) separator: 각 item 사이의 공간 space (디폴트 " ") terminator: print안의 아이템들을 모두 출력 후 마지막 문자 (디폴트 '\n') parameter에 함수 유형 고차 함수(higher order function) 성격: 함수를 매개변수, 변수로 받을 수 있고 리턴 할 수 있는 성질 cf) 일급 객체 성격: 함수를 변수에 대입할 수 있는 형태 higher order function의 개념: https://ios-development.tistory.com/104 ex) 함수를 매개변수로 받는 형태 func printMathResult(_ mathFunction: (Int, Int) -> Int, _ a: Int, _ b..
문자열 index 접근 startIndex와 index(:offsetBy:) 사용 var str = "abc d e f" // a 가져오는 방법 str.first // 타입: Character?, String.Element str[str.startIndex] // 타입: Character // b 가져오는 방법 str[str.index(after: str.startIndex)] // d 가져오는 방법 str[str.index(str.startIndex, offsetBy: 4)] 특정 문자열 접근 firstIndex(of:) 사용 0~특정 index 가져오기 인덱스로 접근하면 타입이 String.SubSequence가 되므로 따로 String 변환이 필요 var str = "abc, def" // abc ..