클래스, 프로퍼티 개념이 아직 익숙하지 않아 클론 코딩을 하면서 self. 투성이인 문서를 이해하기 어려워 정리하게 되었다. 고로 틀린 정보가 있을 수 있다.
결국 노션에 정리함!
모든 인스턴스는 암시적으로 생성된 self 프로퍼티를 갖는다.
(모든 인스턴스는 self 프로퍼티를 갖는다)
// 인스턴스: 클래스, 구조체, 열거형에서 생성된 객체
// 프로퍼티: 클래스, 구조체, 열거형에 연관된 값이나 정보
메서드의 매개변수가 아닌 인스턴스 프로퍼티를 지칭할 때, self 프로퍼티를 사용한다.
인스턴스가 생성되고 초기화된 후(이니셜라이즈된 후) 프로퍼티 값에 접근하고 싶을 때 마침표(.)를 사용한다.
//예시1
class LevelClass {
var level: Int = 0
}
func levelUp() {
print("Level Up")
level = level + 1
}
var levelClassInstance: LevelClass = LevelClass() //levelClassInstance는 LevelClass 클래스에서 생성된 객체이다 = 인스턴스이다
levelClassInstance.levelUp() //.은 인스턴스의 프로퍼티(값/정보)에 접근하고 싶어 사용한 것, 여기서는 변수 level의 값에 접근한다는 것이다.
// 예시1의 LevelClass 클래스에 매개변수로 정수값을 전달인자로 넣어주면
// level의 값이 입력된 매개변수로 변하는 메소드를 추가 하려한다.
func jumpLevel(to level: Int) { //전달인자 레이블: to, 매개변수 이름: level
self.level = level
// LevelClass 클래스의 level 프로퍼티 값을
// jumpLevel 메소드의 매개변수의 이름인 level에 입력된 값으로 바꾸려 하는데
// 프로퍼티 이름과 매개변수 이름이 같다.
// 두 이름을 구별해주기 위해 인스턴스 프로퍼티 앞에 self.를 붙여준다.
}