티스토리 뷰
728x90
소멸자 (Deinitialization)
Deinitialization는 클래스 인스턴스가 할당 해제되기 직전에 호출됩니다.
deinit은 클래스에서만 사용할 수 있습니다.
소멸자의 동작 (How Deinitialization Works)
Swift는 더이상 필요로하지 않는 자원의 해지를 자동으로 해줍니다. (ARC)
하지만 사용자가 자원 해지를 수동으로 해줘야 하는 경우도 있는데, 이때 사용하는게 deinit 입니다.
소멸자는 클래스당 하나만 선언할 수 있고, 파라미터를 받을 수 없습니다.
형태는 아래와 같습니다.
deinit {
// perform the deinitialization
}
deinitializer 는 클래스의 인스턴스 메모리 해제가 필요할때 자동으로 호출 되며, 수동 호출이 불가 합니다.
즉, 인스턴스가 메모리 해제되기 직전에 호출된다는 말이죠!
상위클래스 소멸자는 하위클래스 소멸자 구현이 끝날때 자동으로 호출됩니다.
상위클래스 소멸자는 하위클래스 소멸자가 없어도 자동으로 호출 됩니다.
소멸자가 구현되는 방식 (Deinitializer in Action)
소멸자가 호출되기 전까지 인스턴스는 메모리에서 해제되지 않기 때문에, 소멸자는 호출되는 인스턴스의 모든 프로퍼티에 접근할 수 있습니다.
아래 예제를 보면서 확인해 보겠습니다.
class Dog {
var breed: String
var name: String
var age: Int
init(breed: String, name: String, age: Int) {
self.breed = breed
self.name = name
self.age = age
}
deinit {
print("deinit dog class instance")
}
}
var dagam: Dog? = Dog(breed: "poodle",
name: "dagam",
age: 4)
dagam = nil // deinit dog class instance
작동 순서
- dagam은 Dog 클래스의 인스턴스 객체 입니다.
- 인스턴스가 생성된 이후 dagam 인스턴스에 nil을 할당하게 되면 초기화할게 없어지니
deinit 소멸자가 호출되어 "deinit dog class instance" 가 프린트 됩니다. - dagam 클래스 인스턴스의 메모리가 해제 됩니다.
728x90
'iOS' 카테고리의 다른 글
[iOS] TableView, CollectionView 차이점 (0) | 2022.05.20 |
---|---|
[iOS] class의 성능을 향상 시키는 방법 (0) | 2022.05.18 |
[Swift] 고차함수 - reduce (0) | 2022.05.13 |
[iOS] SceneDelegate 란? (feat. LifeCycle) (0) | 2022.05.11 |
[Swift] enumerated() 메소드 (0) | 2022.05.08 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Swift ModernRIBs
- Swift inout
- RTCCameraVideoCapturer
- Swift final
- Swift 알고리즘
- ios
- Swift joined
- CS 네트워크
- Swift Error Handling
- Swift RIBs
- Swift Leetcode
- Swift 내림차순
- swift (programmers)
- Swift
- swift protocol
- iOS error
- Class
- Swift 프로그래머스
- Combine: Asynchronous Programming with Swift
- 원티드 프리온보딩
- swift property
- swift reduce
- swift 고차함수
- Swift joined()
- swift programmers
- 2023년 회고
- RIBs tutorial
- Swift init
- Swift 프로퍼티
- removeLast()
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함