일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Observable
- 스위프트
- SWIFT
- ios
- uiscrollview
- Protocol
- 리펙토링
- combine
- Xcode
- HIG
- rxswift
- MVVM
- ribs
- Human interface guide
- collectionview
- UICollectionView
- RxCocoa
- 애니메이션
- Clean Code
- clean architecture
- UITextView
- 리팩토링
- uitableview
- Refactoring
- 리펙터링
- 클린 코드
- swiftUI
- swift documentation
- tableView
- Today
- Total
목록value type (4)
김종권의 iOS 앱 개발 알아가기
Swift에서 Collection 타입은 모두 value 타입reference type은 다중 스레드 환경에서 동기화 문제와 Data race 문제를 발생시키므로 value타입으로 관리하는것이 더욱 용이하기 때문에, Collection 타입은 value type으로 설계하지만 아래 코드처럼 reference 타입을 value 타입으로 감싼 것 뿐이며, struct 내부도 모두 value type이 아님class SomeClass {}struct SomeStruct { let c = SomeClass()}내부도 모두 value type으로 구성하면 비용이 발생하는데, 아래에서 계속 설명Large structs의 복사 방식 특징 2가지아래처럼 person을 복사할 때 내부적으로 비용이 많이 발생let ..
value를 사용할때의 ownershipvalue를 사용하면 어떻게든 소유권 시스템을 갖음var array = [1,2,3] // array는 [1,2,3]에 관한 소유권을 갖음소유권 시스템값을 소비(consume)하거나 변경하거나(mutate) 빌리는(borrow) 것Consuming values 개념representation의 소유권을 한고셍서 다른 곳으로 이전한다는 의미value를 넘길때 consuming 파라미터를 사용하여 구현ex) 아래 코드에서 발생하는 consuming 이해하기array에 값을 assign할 때, 초기 값의 소유권을 array 변수로 이전함array입장에서 초기값의 소유권을 갖게되므로 "consuming" 함func makeArray() { var array = [1.0, ..
value type, reference type swift에는 2가지 타입이 존재 value type: struct, enum, collection, 기본타입(Int Double, Bool ...) reference type: class, function, closure 두 타입의 차이 - copying value tpye - 카피할때 데이터의 복사본을 생성 reference type - shared instance를 생성하여 같은 인스턴스를 바라보는 참조값을 생성 cf) value type을 사용하면, thread간 의도하지 않은 공유로부터 안전한 프로그래밍이 되어, 로버트 C. 마틴의 클린 코드에서 얘기하는 functional programming 핵심은 데이터의 불변성에 도움 메모리 공간 할당 일반..
`==` vs `===` a == b: a의 값과 b의 value가 같은지 비교 let value1 = 1 let value2 = 2 print(value1 == value2) // false a === b: a가 참조하고 있는 인스턴스와 b가 참조하고 있는 인스턴스가 같은지 비교 swift에서는 크게 value타입과 reference타입이 존재할 때, reference타입을 가질 수 있는 class 객체를 참조할 수 있는 변수는 다수가 될 수 있으므로 === 연산자가 필요 let p1 = Person(id: 1, name: "kim") let p2 = Person(id: 1, name: "kim") let p3 = p1 print(p1 === p2) // false print(p1 === p3) // ..