본문 바로가기

Dev/iOS & SWIFT

[Swift] 구조체 (Structure) | 타입 프로퍼티 (Type Property) | 타입 메서드 (Type Method)

728x90

구조체 (Structure)

  • 데이터 타입을 정의함 👉 대문자 CamelCase를 사용
  • 프로퍼티와 메서드로 구성
  • 프로퍼티: 구조체 내에 정의되어 있는 변수
  • 메서드: 구조체 내에 정의되어 있는 함수
  • 다른 언어의 클래스와 유사한 개념
  • 만약 구조체의 인스턴스를 불변 인스턴스(let)로 생성한다면, 그 안에 있는 변수값들도 변경이 불가능! 메소드 호출은 가능함!
struct 구조체명 {
	// 구현부
}

 

타입 프로퍼티(Type Property)와  타입 메서드(Type Method)

  • 타입 자체가 사용할 수 있는 프로퍼티 및 메서드를 의미함
  • 즉, 구조체에서 생성된 인스턴스가 아닌, 구조체 자체의 타입에서 사용할 수 있는 프로퍼티 / 메서드
  • static 키워드를 사용해서 정의함
  • static func 함수명() { . . . } 👉 이와 같은 형태가 타입 메서드

 

구조체 정의 예시

  • 구조체 내에는 다양한 형태의 프로퍼티(변수)와 메서드(함수)를 정의할 수 있음
struct Sample {
	// 가변 프로퍼티
	var mutableProperty: Int = 100
    
    // 불변 프로퍼티
    let immutableProPerty: Int = 200
    
    // 타입 프로퍼티 (static 키워드 사용 - 타입 자체가 사용하는 것! 인스턴스는 사용 불가)
    static var typeProperty: Int = 300
    
    // 인스턴스 메서드 (인스턴스가 사용하는 메서드
    func instanceMethod() {
    	print("Instance Method")
    }
    
    // 타입 메서드 (static 키워드를 사용하여 타입 자체가 사용하는 메서드)
    static func typeMethod() {
    	print("Type Method")
    }
    
}

 

구조체의 사용 예시

// 가변 인스턴스 생성
var mutable: Sample = Sample() 

// 가변 인스턴스 내 가변 프로퍼티 값 변경
mutable.mutableProperty = 500

// 불변 인스턴스 생성
let immutable: Sample = Sample() 

// 불변 인스턴스의 메소드 호출 - 불변 인스턴스라도 메소드 호출은 가능
immutable.InstanceMethod()

// 타입 프로퍼티 값 변경와 타입 메소드 호출
Sample.typeProperty = 1000
Sample.typeMethod()

 

본 내용은 부스트코스의 'iOS 프로그래밍을 위한 스위프트 기초' 강의를 토대로 작성되었습니다

728x90