Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Clean Code
- combine
- swiftUI
- 리팩토링
- UITextView
- ios
- 애니메이션
- clean architecture
- Protocol
- tableView
- MVVM
- 리펙터링
- 스위프트
- SWIFT
- HIG
- 클린 코드
- Observable
- Refactoring
- ribs
- Xcode
- uitableview
- Human interface guide
- rxswift
- uiscrollview
- swift documentation
- map
- UICollectionView
- 리펙토링
- RxCocoa
- collectionview
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] consume, consuming 개념 (메모리 효율성, CoW) 본문
consume 개념
- swift5.9+
- "consume" 의미 그대로 lifetime을 중지한다는 의미
- a라는 프로퍼티를 consume 시키면사용하지 못함 (컴파일 에러 발생)
var a = [1,2,3]
var b = consume a
print(a) // 'a' used after consume
- 프로퍼티를 copy하거나 write할때 최적화하기 위해 consume이 탄생
- 일반적으로 CoW라고 명칭
- 데이터를 복사하는 대신에 필요한 시점에서만 복사를 하기 때문에 메모리를 효율적으로 사용
- 주로 대용량 데이터나 공유 자원을 다룰 때 유용
ex) CoW 개념
- var b = a를 시도할때, b는 a의 데이터를 참조하고 있다가, 만약 b의 수정사항이 될땐 (b = 1), b가 자체 복사본을 만들어서 1의 값으로 변경하는 것
- 메모리를 효율적으로 사용이 가능
var a = 0
var b = a
b = 1
consuming 키워드
- consume 키워드와 consuming이라는 키워드가 존재
- consuming키워드는 함수 파라미터에서 값을 받을 때 사용
- 아래처럼 doSomethin에서 value값에 새로 값을 할당해도 컴파일 에러가 발생하지 않는데, CoW의 개념처럼 동작하는 것
- 파라미터에 값이 넘어갈때 value = a 이렇게 동작할 때 value는 a의 값을 참조하다가 value값에 새로운 값이 어싸인이 되면(value = [1]) 그때 copy하고 새로 값을 할당하는 것
var a = [1,2,3]
doSomething(with: a)
func doSomething(with value: consuming [Int]) {
value = [1]
}
* 참고
- https://www.lenovo.com/us/en/glossary/what-is-cow/?orgRef=https%253A%252F%252Fwww.google.com%252F
- https://github.com/apple/swift-evolution/blob/main/proposals/0366-move-function.md
'iOS 응용 (swift)' 카테고리의 다른 글
Comments