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
반응형
'Apple Developer > Swift' 카테고리의 다른 글
GitHub에 배포한 스위프트 패키지 가져오기 (0) | 2024.04.01 |
---|---|
xcode 에서 test 버튼 (0) | 2024.04.01 |
xcode 코드 접기 (Code folding ribbon) (0) | 2024.03.29 |
Swift 초보 2 (0) | 2023.08.22 |
Swift 초보 공부 잼나여! (0) | 2023.08.21 |