티스토리 뷰

Swift

Swift - private(set) 이란?

DevDiana 2024. 9. 19. 15:43

안녕하세요 Diana 입니다.

요즘은 개인 프로젝트를 진행하며 부트캠프 당시 받았던 PR 리뷰도 틈틈히 보며 공부하고 있는데요,

저희 팀이 받았던 리뷰 말고도 다른 분들의 리뷰를 구경하다 보니 private(set) 이라는 접근제어자를 발견해 오늘은 이걸 알아보려고 합니다.

 

시작할게요~

 

 


 

✅ private(set) 이란?

Swift에는 여러 접근제어자가 존재합니다.

그 중 private은 해당 함수 또는 변수가 선언된 코드 블록 내부에서만 사용이 가능하며 인스턴스 생성을 통해 사용하는 것 또한 불가능하죠.

이런 private 특성을 이용하여 우리는 은닉하고자 하는 정보에 주로 private을 사용하며 접근하고자 할 때는 특정 함수를 생성하여 함수를 통해 접근해주곤 합니다.

 

class TestClass {
    private var privateValue: String = "Hello"
    
    func changeValue(value: String) {
        privateValue = value
    }
}

let test = TestClass()
test.changeValue(value: "Good")
print(test.privateValue) //'privateValue' is inaccessible due to 'private' protection level

 

 

하지만 이런 private을 사용하면 좀 복잡해지는 경우가 있는데 바로 테스트 케이스를 작성할 때 입니다.

테스트케이스에서는 테스트를 위한 인스턴스를 생성하고 해당 값을 읽어와야하는 경우가 생기는데 private으로 설정 되어 있으면 읽어올 수 없습니다.

 

따라서 이때 사용할 수 있는게 바로 private(set) 입니다.

 

private(set)은 외부에서 읽기만 가능하며 내부에서 쓰기가 가능하도록 하는 간결한 코드를 이야기합니다.

 

class TestClass {
    private(set) var privateValue: String = "Hello"
    
    func changeValue(value: String) {
        privateValue = value
    }
}

let test = TestClass()
test.changeValue(value: "Good")
print(test.privateValue)

 

에러가 나는 앞선 코드와 다르게 해당 코드에서의 print 문은 에러 없이 잘 작동하게 되죠.

 

 

이렇게 오늘은 private(set)에 대해 간단히 알아봤습니다.

'Swift' 카테고리의 다른 글

Swift - Opaque Type 이란?  (1) 2024.10.17
Swift - CoreData란?  (0) 2024.07.12
Swift - Swift의 관점에서 Thread 이해하기(1)  (0) 2024.07.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함