본문 바로가기

Apple Developer/Swift

Swift 어려운 내용

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