Apple Developer/Swift
Swift 어려운 내용
eastsky21
2023. 8. 22. 19:20
728x90
반응형
메모리 관리 (ARC)
struct Struct1 {
var a: Int = 0
}
class Class1 {
var a: Int = 0
// 소멸자
deinit {
print("class 1 deinit")
}
}
//구조체 Stack - 메모리 공간이 그 위에 생김
//Stack 은 함수 내에 있는 변수는 함수 실행이 끝나면 바로 메모리 해제
//클래스 heap - 동적으로 메모리 관리
//클래스는 좀 더 긴 생명주기
//메모리 레퍼런스 카운트
var struct1 = Struct1()
var class1: Class1? = Class1() //1
//메모리 레퍼런스 카운트 증가 (Strong 레퍼런스)
var class2: Class1? = class1 //2
class1 = nil //1
class2 = nil //0
//0 이 되는 시점에 deinit 출력됨
weak 를 쓰면 레퍼런스 카운트가 증가되지 않아서
상호 참조 시에도 소멸자 호출 됨
unowned 는 null이 아님을 보장하는 것이 weak와의 차이
프로토콜 - 개발 시 중요
Java에서 Interface와 비슷

명시 한대로 사용 해야 함
728x90
반응형