choco5958
지마의 개발일기
choco5958
전체 방문자
오늘
어제
  • 전체보기 (46)
    • 개발 (34)
      • Java (0)
      • JavaScript (7)
      • Php (4)
      • Ios(Swift) (23)
    • 프론트엔드 (7)
      • Html (1)
      • Css (5)
    • 백엔드 (0)
      • Mysql (0)
      • Oracle (0)
      • MongoDB (0)
    • 서버 (2)
      • Linux (2)
    • 일상 (3)
      • 반려동물 (1)
      • 베이킹 (2)
      • 맛집 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 자바스크립트#javascript#js#개발#웹개발
  • php#linux#soap#리눅스
  • ios#swift#스위프트#아이폰#애플#옵셔널체이닝
  • ios#swift#스위프트#아이폰#클래스#애플
  • ios#swift#스위프트#아이폰#애플#상속
  • ios#swift#스위프트#아이폰#애플#프로토콜
  • ios#swift스위프트#애플#아이폰#클래스#구조체
  • ios#swift#스위프트#조건문#아이폰#애플
  • swift#ios#스위프트#애플#아이폰#init#초기화구문
  • ios#swift#스위프트#애플#아이폰#try-catch#오류처리
  • ios#swift#스위프트#애플#아이폰#고차함수
  • ios#swifth#스위프트#열거형#아이폰#애플
  • ios#swift#스위프트#애플#아이폰
  • ios#swift#스위프트#구조체#문법#애플#아이폰
  • ios#swift#스위프트#클로저#애플#아이폰
  • ios#swift#스위프트#아이폰#애플#타입캐스팅
  • ios#swift#스위프트#프로퍼티#애플#아이폰
  • ios#swift#스위프트#아이폰#애플#함수
  • ios#swift#스위프트#애플#아이폰#assert#guard
  • php#500error

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
choco5958

지마의 개발일기

개발/Ios(Swift)

IOS 스위프트(Swift) 문법 - 프로퍼티

2021. 8. 17. 22:00

Properties(프로퍼티) 란?

 

클래스, 구조체 또는 열거형 등에 관련된 값을 뜻한다.

프로퍼티는 세가지 종류가 있습니다.

 

저장 프로퍼티 - 인스턴스의 변수 또는 상수를 의미

연산 프로퍼티 - 값을 저장하는 것이 아니라 특정 연산을 실행하는 결과 값을 의미

타입 프로퍼티 - 특정 인스턴스에서 사용되는 것이 아닌 특정 타입에서 사용되는 프로퍼티

 

//저장프로퍼티
struct Dog {
    var name: String
    var gender: String
}

var dog = Dog(name: "gunter", gender: "Male")  //Dog
print(dog)  //"Dog(name: "gunter", gender: "Male")\n"

dog.name = "홍길동"  //Dog

let dog2 = Dog(name: "gunter", gender: "male")  //Dog
//dog2.name = "홍길동"  //구조체가 값 타입이라 Cannot assign to property: 'dog2' is a 'let' constant

class Cat {
    var name: String
    let gender: String
    
    init(name: String, gender: String) {
        self.name = name
        self.gender = gender
    }
}

//cat 인스턴스의 name이라는 프로퍼티가 gunter로 변경, 구조체는 값 타입이라 상수로 선언하게면 변수로 선언된 프로퍼티여도 값 변경 안됨 클래스는 참조타입이라 상수로 선언해도 프로퍼티의 값이 변경 가능, 상수로 선언된 젠더 프로퍼티는 값 변경 안됨
let cat = Cat(name: "json", gender: "male")  //Cat
cat.name = "gunter"  //Cat
print(cat.name)  //"gunter\n"


//연산프로퍼티 - 클래스 구조체 열거형에서 사용 가능, 값을 직접적으로 저장안하고 게터세터를 이용해 다른 프로퍼티와 값들을 직접적으로 접근
struct Stock {
    var averagePrice: Int
    var quantity: Int
    var purchasePrice: Int {
        get {
            return averagePrice * quantity  //6900
        }
        
        set(newPrice) {
            averagePrice = newPrice / quantity  //Stock
        }
    }
}

var stock = Stock(averagePrice: 2300, quantity: 3)  //Stock
print(stock)  //"Stock(averagePrice: 2300, quantity: 3)\n"
stock.purchasePrice  //6900
stock.purchasePrice = 3000  //Stock
stock.averagePrice  //1000


//프로퍼티 옵저버 - 프로퍼티 값의 변화를 관찰하고 반응, 새로운 값이 기존 값과 같더라도 프로퍼티 옵저버 호출 프로퍼티가 셋될때마다 호출, 3가지 경우에만 사용가능 - 저장, 오버라이딩된 저장계산 프로퍼티
class Account {
    var credit: Int = 0 {
        //소괄호 이름 지정
        willSet {  //값이 저장되기 직전에 호출되는 옵저버, 새로 저장될 프로퍼티의 값을 상수 매개변수로 전달
            print("잔액이 \(credit)원에서 \(newValue)원으로 변경될 예정입니다.")  //"잔액이 0원에서 1000원으로 변경될 예정입니다.\n"
        }
        
        didSet {  //값이 저장된 직후에 호출되는 옵저버, 프로퍼티의 기존 값을 상수 매개변수로 전달
            print("잔액이 \(oldValue)원에서 \(credit)원으로 변경되었습니다.")  //"잔액이 0원에서 1000원으로 변경되었습니다.\n"
        }
    }
}

var account = Account()  //Account
account.credit = 1000  //Account


//타입 프로퍼티 - 인스턴스 생성없이 객채내에 프로퍼티에 접근을 가능하게 함, 프로퍼티 타입 자체와 연결
struct SomeStructure {
    static var storedTypeProperty = "Some value."  //스토어
    
    static var computedTypeProperty: Int {  //컴퓨티드
        return 1  //1
    }
}

SomeStructure.computedTypeProperty  //1
SomeStructure.storedTypeProperty  //"Some value"
SomeStructure.storedTypeProperty = "hello"
SomeStructure.storedTypeProperty  //"hello"

'개발 > Ios(Swift)' 카테고리의 다른 글

IOS 스위프트(Swift) 문법 - 상속  (0) 2021.08.19
IOS 스위프트(Swift) 문법 - 클래스와 구조체의 차이  (0) 2021.08.19
IOS 스위프트(Swift) 문법 - 초기화 구문 init  (0) 2021.08.17
IOS 스위프트(Swift) 문법 - 클래스  (0) 2021.08.17
IOS 스위프트(Swift) 문법 - 구조체  (0) 2021.08.17
    '개발/Ios(Swift)' 카테고리의 다른 글
    • IOS 스위프트(Swift) 문법 - 상속
    • IOS 스위프트(Swift) 문법 - 클래스와 구조체의 차이
    • IOS 스위프트(Swift) 문법 - 초기화 구문 init
    • IOS 스위프트(Swift) 문법 - 클래스
    choco5958
    choco5958
    안녕하세요. 개발 및 일상 팁 들을 포스팅하는 블로그입니다.

    티스토리툴바