Swift에서 프로퍼티, 인스턴스 메서드, 타입 메서드는 다음과 같은 의미를 가집니다
- 프로퍼티 (Properties): 프로퍼티는 클래스, 구조체, 또는 열거형과 같은 타입에 값을 저장하는 변수나 상수입니다. 이들은 인스턴스 프로퍼티와 타입 프로퍼티로 나뉩니다.
- 인스턴스 메서드 (Instance Methods): 특정 클래스, 구조체, 또는 열거형의 인스턴스에 속하는 메서드입니다. 이 메서드들은 특정 타입의 인스턴스에 대해 호출되며, 해당 인스턴스의 데이터에 접근하거나 수정하는 기능을 수행할 수 있습니다.
- 타입 메서드 (Type Methods): 타입 자체에 연결된 메서드입니다. static 키워드를 사용하여 선언하며, 클래스의 경우 class 키워드를 사용하여 재정의가 가능한 타입 메서드를 만들 수도 있습니다. 타입 메서드는 인스턴스가 아닌 타입 자체에 대해 호출됩니다.
- 인스턴스 (Instance) : 인스턴스란 타입의 구체적인 실현과 같다 즉 인스턴화 시킨다는 뜻은 구체화(메모리에 할당)시킨다는 의미이입니다.
예를 들어, struct에서 static var의 사용 예시는 다음과 같습니다
struct Example {
static var commonValue: Int = 0
}
Example.commonValue = 5
print(Example.commonValue) // 출력: 5
예시 코드
프로퍼티 예시
struct Person {
var name: String // 인스턴스 프로퍼티
static var species: String = "Homo sapiens" // 타입 프로퍼티
}
var person = Person(name: "John")
print(person.name) // 인스턴스 프로퍼티 사용
print(Person.species) // 타입 프로퍼티 사용
인스턴스 메서드 예시
class Dog {
var name: String
init(name: String) {
self.name = name
}
func bark() {
print("\(name) is barking")
}
}
let dog = Dog(name: "Buddy")
dog.bark() // 인스턴스 메서드 호출
타입 메서드 예시
class Math {
static func square(number: Int) -> Int {
return number * number
}
}
let result = Math.square(number: 3) // 타입 메서드 호출
print(result)
타입 메서드는 인스턴스에게 의존하지 않고 호출할 수 있다.
어떤 값을 retrun받아 직접 프로퍼티에 할당하고 싶을 때 유용하게 쓰인다.
인스턴스 예시
class Dog {
var name: String
var breed: String
init(name: String, breed: String) {
self.name = name
self.breed = breed
}
func bark() {
print("\(name) barks!")
}
}
이런 상태에서는 아직 직접적인 실채화를 시키지 않은 상태, 즉 메모리에 할당되지 않은 상태이다.
Dog라는 class는 단지 추상적인 표현만 할 뿐 실제하지 않는 상태이다.
Dog class를 인스턴스화시키고 싶다면 다음과 같이 할 수 있다.
let myDog = Dog(name: "Buddy", breed: "Golden Retriever")
여기서 myDog는 Dog class의 인스턴스이다. Dog class에 정의된 프로퍼티와 메서드를 가지며 메모리에 실제 존제하는 객체이다.
인스턴스를 사용함으로서 하나의 정의를 만들고 그 정의에 따라 찍어 낼 수 있게 한다.
let myDog = Dog(name: "Buddy", breed: "Golden Retriever")
let myDogA = Dog(name: "A", breed: "Golden Retriever")
let myDogB = Dog(name: "B", breed: "Golden Retriever")
let myDogC = Dog(name: "C", breed: "Golden Retriever")
let myDogD = Dog(name: "D", breed: "Golden Retriever")
인스턴스를 사용함으로써, 같은 클래스 또는 구조체를 기반으로 다양한 객체를 생성하고 각각의 객체가 서로 다른 상태(속성 값)를 가질 수 있습니다.
'🍎swift > swift 기초' 카테고리의 다른 글
[Swift] UITableView , UITableCell (0) | 2024.01.03 |
---|