구조체와 클래스는 자체 변수와 상수를 가질 수 있으며, 이를 속성이라고 합니다.
내부의 속성을 사용하여 메서드를 사용할 수도 있습니다.
속성관찰자
didSet
: 속성이 변경 된 후oldValue
: 변경되기전 속성값을 포함하기 때문에 호출할 수 있습니다.willSet
: 속성이 변경 되기 전newValue
새로운 속성값을 포함하기 때문에 호출할 수 있습니다.연산프로퍼티
struct Person {
var age: Int
var ageInDogYears: Int {
get {
return age * 7
}
}
}
var fan = Person(age: 25)
print(fan.ageInDogYears)
get {}
는 생략이 가능합니다.var ageInDogYears: Int {
return age * 7
}
static
(정적)을 사용하면 타입의 인스턴스가 아니지만 속성과 메서드를 사용할 수 있습니다. 공유하는 값을 저장하여 의미있게 구성하는데 유용합니다.
접근제어자를 사용하여 구조체및 클래스 내부의 데이터 중 외부에 노출되어야 하는 것을 지정할 수 있습니다.
클래스는 상속이 가능합니다. 상속받은 클래스는 추가하고 싶은 경우 추가할 수 도있고 추가하고 싶지 않은 경우 아무것도 추가하지 않을 수 있습니다.
Polymorphism(다형성) : 객체지향 프로그래밍의 다형성은 주로 오버라이딩과 오버로딩을 의미
타입캐스팅 : 타입의 객체를 다른 타입으로 변환하는 것
타입캐스팅은 알지못하는 타입을 알고있는 타입으로 변환할 때 사용하는 것입니다. 강제로 관계가없는 타입끼리 변환을 할 수 없습니다.
// MARK: - 정수를 문자열로 강제캐스팅은 불가능
let number = 5
let text = number as! String
// MARK: - 관계가 있는 타입으로 변경후 캐스팅
let number = 5
let text = String(number)
print(text)
클로저는 코드를 보유하는 변수로 생각할 수 있습니다.
클로저는 생성될 때 내부에서 사용될 값의 복사본을 가져옵니다.
클로저는 마지막 매개변수인 경우 매개변수를 제거하고 중괄호 안에 코드블록을 제공할 수 있습니다.
Swift 용어 해설 링크