iOS Swift private (set) var

Joseph Kim·2022년 3월 3일
0

iOS

목록 보기
2/4

시작하며

private (set) var 라는 것에 대해서 정리를 하기 위해 글을 작성합니다. 개발하는 정대리라는 유튜브에서 배운 것이고 링크는 아래와 같아요.개발하는 정정대리

private vs private (set) var

import UIKit

struct MyPet {
    var title: String = "타이틀없음"
    private (set) var name: String = "이름없음"
    private var nickName: String = "별명없음"
    
    mutating func setName(to newName: String){
        self.name = newName
    }
    
    mutating func setNickName(to newNickName: String) {
        self.nickName = newNickName
    }
}


var myPet = MyPet()

두개를 비교하기 전에 일반 적으로 변수 앞에 아무런 것도 달지 않으면 publicd이라고 쓴 것 과 같다. 그래서 선언한 클래스나 구조체 밖에서 접근 가능하다. 아래 코드에서 title은 구조체 밖에서 myPet.title = "바뀐타이틀" 로 바꿀 수 있다.

private으로만 선언을 하면 선언한 구조체나 클래스 안에서만 접근이 가능하다. print(myPet.nickName) 하면 에러 발생한다. 당연히 myPet.nickNmae = "새별명" 이라고 해도 에러 발생 한다. 'nickName' is inaccessible due to 'private' protection level"

하지만 private (set) var로 선언된 것은 밖에서 읽는 것은 가능 하지만 직접 셋팅하는 것은 안된다.

print(myPet.name) //"이름없음" 출력
myPet.name = "새이름" //에러 발생 : Cannot assign to property: 'name' setter is inaccessible

아래와 같이 name을 바꿀 수 있다.

myPet.setName(to: "새이름")
print(myPet.name) // "새이름" 
profile
I'm working on GM TCK(old, GM Korea). I'm just starting Mobile App Development. Previously I've worked at various Vehicle Development Area

0개의 댓글