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 | 31 |
Tags
- 스위프트
- collectionview
- HIG
- 리팩토링
- map
- ribs
- Observable
- MVVM
- Clean Code
- SWIFT
- Protocol
- 리펙토링
- RxCocoa
- swift documentation
- Xcode
- uitableview
- UITextView
- clean architecture
- uiscrollview
- rxswift
- UICollectionView
- swiftUI
- Human interface guide
- 애니메이션
- 리펙터링
- combine
- 클린 코드
- ios
- Refactoring
- tableView
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 프로퍼티 assign 개념 (#reference type, #ARC) 본문
프로퍼티를 assign한다는 의미
- assign한다는 것은 아래처럼 특정 값을 변수에 대입한다는 의미
// a에 1을 assign하는 형태
let a = 1
assign되는 2가지 형태
- primary type, struct와 같은 value type을 assign하는 경우
- value type을 assign하게되면 a프로퍼티는 value type가 됨
// a에 1을 assign하는 형태
let a = 1
- class와 같은 reference type을 assign하는 경우
- reference type을 assign하게되면 해당 프로퍼티는 reference type이 됨
class C {}
let c = C()
reference type 주의사항
- reference type이라는 의미를 주의할 것
- 아래와 같이 c 인스턴스는 reference type이고 이 c를 다시 referenceOfc프로퍼티에 assign하는 경우
- 이때 c에 nil을 대입했을때 referenceOfc도 같이 nil이 될 수 있다고 잘못생각할 수 있음
class C {}
private var c: C? = C()
let referenceOfc = c
c = nil
print(referenceOfc) // Optional(C)
- c프로퍼티는 C() 인스턴스를 참조하는 상태에서, let referenceOfc = c를 할 경우 referenceOfc는 c가 참조하고 있는 인스턴스의 주소값을 공유한다는 의미
- c프로퍼티 에다가 nil을 assign하는 경우, C() 인스턴스를 nil로 만드는 것이 아님
(일반적으로 nil을 assign하여 메모리 초기화 되는 것은 ARC에 의하여 참조 카운팅이 0이되어서 메모리 해제되는 것뿐) - 즉 c에다가 nil을 assign하더라도 referenceOfc 프로퍼티는 nil이 되지 않음
- c프로퍼티 에다가 nil을 assign하는 경우, C() 인스턴스를 nil로 만드는 것이 아님
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] UIImage에서 alpha 정보 가져오는 방법 (alphaInfo, jpegData, pngData, 투명도) (0) | 2024.02.17 |
---|---|
[iOS - swift] CALayer 성능 향상 방법 (shouldRasterize, rasterizeationScale, draw) (0) | 2024.02.16 |
[iOS - swift] NSNotFound로 안전하게 IndexPath 접근하는 방법 (# scrollToRow, #IndexPath) (0) | 2024.02.14 |
[iOS - swift] Debounce 직접 구현해보기 (0) | 2024.02.13 |
[iOS - swift] DispatchQueue에서 [weak self]를 안써도 되는 이유 이해하기 (0) | 2024.02.10 |
Comments