[Swift] Self 프로퍼티

2023. 10. 30. 15:52·Apple/Swift
목차
  1. 서론
  2. self가 뭐야?
  3. 그럼 self는 왜 쓰는 거지?
  4. 마무리
728x90
반응형

서론

안녕하세요, 여러분! 오늘은 Swift에서 굉장히 중요한 역할을 하는 self 프로퍼티에 대해 이야기를 나눠볼까 합니다.

 

Swift를 처음 배우는 분들이나, 다른 언어에서 넘어오신 분들이라면 '이 self는 도대체 뭐지?'라는 생각을 해보셨을 겁니다. (사실 제가 그랬어요 ㅎ..) 오늘은 그런 의문점을 풀어드리겠습니다!! 바로 살펴보도록 하겠습니다.

self가 뭐야?

Swift에서 self는 현재 인스턴스를 가리키는 키워드입니다. 클래스, 구조체, 열거형 내부에서 사용되며 해당 인스턴스 자신을 참조하게 됩니다. 이 개념을 알고 나면 "어? 이거 다른 언어들에서 쓰던 this 키워드랑 비슷한데?"라고 하실 텐데요. 맞습니다!

 

Swift의 self와 Java나 JavaScript 등의 언어에서의 this는 매우 흡사한 개념입니다.

이들 모두 현재 인스턴스를 가리키는 키워드로서, 클래스나 구조체, 열거형의 내부에서 사용되며 해당 인스턴스 자신을 참조하게 됩니다.

따라서, self와 this는 각각의 언어에서 현재 인스턴스에 접근할 때 사용하는 키워드라고 이해하시면 됩니다.

 

예를 들어 아래와 같은 코드가 있다고 해봅시다.

class Car {
    var speed = 0
    
    func accelerate() {
        self.speed += 10
    }
}

여기서 accelerate() 메소드 안의 self.speed는 "자기 자신(Car 인스턴스)의 속도"라는 것을 의미합니다.

그럼 self는 왜 쓰는 거지?

self를 이해하셨다면 근본적인 질문이 생기실 겁니다. "self가 뭐하는 키워드인지 알겠는데, 그걸 왜 써?" 라는 질문 말이죠.

왜 굳이 '자기 자신'을 가리켜야 할까요? 그 이유 중 하나는 모호함을 방지하기 위해서입니다.

예를 들어 아래와 같은 코드가 있다고 해봅시다.

class Car {
    var speed = 0
    
    func setSpeed(speed: Int) {
        speed = speed
    }
}

여기서 setSpeed(speed: Int) 메소드 안의 speed = speed 부분은 어떤 속도에 대한 것인지 알 수 없습니다. 매개변수인 속도인지, 클래스 프로퍼티인 속도인지 혼동될 수 있습니다.

하지만 이때 self를 사용하면 명확해집니다.

func setSpeed(speed: Int) {
    self.speed = speed
}

위 코드에서 self.speed 는 클래스의 프로퍼티인 속도를 의미하고, 우측의 'speed'는 메소드 파라미터인 속도 값을 가리켜 명확성과 가독성이 향상됩니다.

마무리

Swift의 self는 '자기 자신'을 가리키는 키워드로, 코드의 명확성과 가독성을 위해 사용됩니다. 처음에는 이해하기 어려울 수 있지만, 적절하게 활용하면 매우 유용한 도구가 될 것입니다.

감사합니다.


틀린 부분이 있거나 더 좋은 내용 훈수 환영합니다!

공감과 댓글 부탁드립니다.

728x90
반응형

'Apple > Swift' 카테고리의 다른 글

[Swift] 예외처리 - 만약 에러가 발생한다면??  (4) 2024.01.03
[Swift] Dictionary 완벽 이해하기  (2) 2024.01.02
[Swift] 객체 인스턴스(object instance)  (0) 2023.10.20
[Swift] 저장 프로퍼티와 지연 저장 프로퍼티(Stored Properties, Lazy Stored Properties)  (3) 2023.10.19
[Swift] 후행 클로저(trailing closure)  (2) 2023.10.18
  1. 서론
  2. self가 뭐야?
  3. 그럼 self는 왜 쓰는 거지?
  4. 마무리
'Apple/Swift' 카테고리의 다른 글
  • [Swift] 예외처리 - 만약 에러가 발생한다면??
  • [Swift] Dictionary 완벽 이해하기
  • [Swift] 객체 인스턴스(object instance)
  • [Swift] 저장 프로퍼티와 지연 저장 프로퍼티(Stored Properties, Lazy Stored Properties)
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (209)
      • Apple (127)
        • iOS (22)
        • visionOS (4)
        • Swift (68)
        • UIKit (2)
        • SwiftUI (24)
        • RxSwift (2)
        • Xcode (5)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    UIKit
    Initializers
    코딩테스트
    제어문
    Vision Pro
    프로퍼티 래퍼
    티스토리챌린지
    스위프트
    swiftUI
    클래스
    프로세스
    배열
    연산자
    SWIFT
    자바스크립트
    이니셜라이저
    네트워크
    Xcode
    변수
    combine
    함수
    Apple
    옵셔널
    visionOS
    비동기
    프로그래머스
    운영체제
    ios
    디자인패턴
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[Swift] Self 프로퍼티

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.