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
반응형