인스턴스는 클래스나 구조체의 실제 예제, 즉 생성된 객체를 인스턴스라고 합니다.
struct Person() {}
let bob = Person()
bob은 Person 구조체의 인스턴스입니다. bob 객체는 Person 구조체의 인스턴스라고 할 수 있습니다.
이렇게 생성된 인스턴스로 해당 구조체에서 정의된 속성 혹은 메서드를 사용할 수 있습니다.
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func sayHello() {
print("안녕하세요! 저의 이름은 \(name)이고, \(age)살입니다.")
}
}
// Person 클래스의 인스턴스 생성
let john = Person(name: "John", age: 30)
john.sayHello() // 출력: 안녕하세요! 저의 이름은 John이고, 30살입니다.
인스턴스가 생성되면 데이터를 저장할 메모리 공간이 할당됩니다. 스택이나 힙에서 이루어집니다.
init?(name: String, year: Int, address: String? = nil, phoneNumber: Int? = nil) {
guard name.count > 2, year >= 1990 else {
return nil
}
self.name = name
self.year = year
self.address = address
self.phoneNumber = phoneNumber
}
init 메소드가 옵셔널(init?)로 선언하여 생성자(초기화 메소드)가 유효하지 않은 정보로 호출되는 경우, 즉 유효성 검사를 통과하지 못하는 경우 해당 생성자가 인스턴스를 생성하지 않고 nil을 반환할 수 있습니다.