본문 바로가기

iOS/Swift

프로퍼티

Property(프로퍼티) 란?

: 클래스, 구조체 또는 열겨형 등에 관련된 값

 

프로퍼티의 종류

  • 저장 프로퍼티
  • 연산 프로퍼티
  • 타입 프로퍼티

 

저장 프로퍼티

import UIKit

// 저장 프로퍼티
// 프로퍼티를 사용하는 가장 간단한 방법
// 변수나 상수로 선언된 클래스나 구조체 인스턴스의 일부분으로 저장되는 것
struct Family {
	var name: String // 이름을 저장하는 저장 프로퍼티
	let gender: String // 성별을 저장하는 저장 프로퍼티
}

class Friend {
	var name: String // 이름을 저장하는 저장 프로퍼티
	let gender: String // 성별을 저장하는 저장 프로퍼티
	
	// 초기화 구문
	init(name: String, gender: String) {
		self.name = name
		self.gender = gender
	}
}

 

연산 프로퍼티

import UIKit

// 연산 프로퍼티
struct Weight {
	// 저장 프로퍼티
	var height: Int
	var weight: Int
	
	// 비만인지 판단하는 연산 프로퍼티
	var obesity: Bool {
		get {
			if((Double(height - 100) * 0.9) >= 25.0) {
				return true
			} else {
				return false
			}
		}
	}
}

var man_1 = Weight(height: 170, weight: 120)
print(man_1.obesity) // 출력결과: true

프로퍼티의 옵저버에는 두 가지의 옵저버 있다.

willSet과 didSet

값이 저장되기 직전에 호출되는 willSet 옵저버

값이 저장된 직후에 호출되는 didSet 옵저버

class Account {
	var credit: Int = 0 {
		// 소괄호 이름 지정
		willSet {
			print("잔액이 \(credit)원에서 \(newValue)원으로 변경될 예정입니다.")
		}
		
		didSet {
			print("잔액이 \(oldValue)원에서 \(credit)원으로 변경되었습니다.")
		}
	}
}
var account = Account()
account.credit = 10000

 출력값을 확인해보면 

 

타입 프로퍼티

// 타입 프로퍼티
// 인스턴스 생성 없이 객체 내에 프로퍼티에 접근을 가능하게 하는 것
// 프로퍼티 타입 자체와 연결하는 것

struct SomeStructure {
	static var storedTypeProperty = "Some value."
	static var computedTypeProperty: Int {
		return 1
	}
}

SomeStructure.computedTypeProperty
SomeStructure.storedTypeProperty = "Hello"
// 아래 코드를 실행해보면 Hello로 바뀐 것을 확인할 수 있다.
SomeStructure.storedTypeProperty

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

Swift stride(from:to:by:)  (1) 2023.09.23
Swift replacingOccurrences(of:with:)  (0) 2023.09.17
옵셔널  (0) 2023.06.17
함수  (0) 2023.06.09
컬렉션 타입  (5) 2023.06.09