-
[Swift] 메모리 관리를 위한 약한 참조 : weakSwift 2022. 7. 5. 01:39
1. 원래 Swift는 메모리에 올리고 내리는걸 직접 해줘야 했다
2. 하지만 ARC (Automatic Reference Counting) 라는걸 통해 더 이상 변수의 값을 쓰지 않으면 자동으로 메모리에서 내려준다
3. 기본적으로 var 변수는 강한 참조이며, 변수에 값이 있으면 ARC의 count가 1로 올라가며 값이 nil일 경우 count가 0으로 내려간다
4. 이걸 사용해서 Class의 instance를 만들때 deinit이라는 함수를 만들어서 instance의 값이 nil이 될 경우 특정 실행문을 실행 시킬수 있다.
5. 하지만 이러한 특성 때문에 메모리에 관리에 취약해 지는 경우가 생기는데 바로 retain cycle 이라는 현상이다.
이게 뭐냐면 두개의 변수가 서로의 값을 강하게 참조하고 있기 때문에 하나의 변수의 값이 nil이 된다고 한들 메모리에서 내려오지 않는 것이다.
아래를 보면 변수값이 nil이 되었지만 deinit이 실행 되지 않았다
6. 그렇다면 두 object가 서로를 강하게 붙들고 있는 관계를 끊어주면 된다
이때 사용되는 Keyword가 바로 weak 이다
pet.owner에 값이 할당 되어도 ARC의 count를 올려주지 않으면 그만이다.
'Swift' 카테고리의 다른 글
[Swift] property의 값을 가지고와 다른 property의 값에 넣어주자 : lazy var (0) 2022.07.17 [Swift] 함수의 Void는 과연 return 이 없다는 뜻일까? (0) 2022.07.17 [Swift] String 에서 특정 문자 제거하기 : String().trimmingCharacters (0) 2022.07.04 [Swift] Completion Handler (0) 2022.07.03 [Swift] lazy property 에 대해서 (0) 2022.06.17