728x90
|
구조체
- 클래스와 마찬가지로 새로운 타입을 정의해주는 역할을 한다.
- '값 타입 (value Type)'
- 인스턴스를 let으로 선언하면 프로퍼티 값 변경 불가
- Int, String, Double, Array 등 Swift의 기본 데이터 타입은 모두 구조체
- 데이터를 홀드하는 용도로 많이 사용한다.
- 프로퍼티 이름에 맞추어서 자동으로 이니셜라이저가 생성된다.
import Foundation
struct Person {
var name : String
var age : Int
}
let p1 = Person(name : "park", age : 15)
print(p1)
/* 결과
Person(name: "park", age: 15)
*/
클래스
- 새로운 사용자 정의 데이터 타입을 만들어 준다.
- '참조 타입 (reference Type)'
- 인스턴스를 let으로 선언해도 참조 타입이기에 내부 프로퍼티 값 변경 가능
- 프로퍼티 기본 값을 지정해주거나, 이니셜라이저에서 초기화를 진행해주어야 한다.
- deinit : 인스턴스가 메모리에서 해제될 때 호출되는 메서드
import Foundation
class Person {
var name : String
var age : Int
init(name : String, age : Int) {
self.name = name
self.age = age
print("\(name) 생성")
}
deinit {
print("\(name) 삭제")
}
}
var p1 = Person(name : "park", age : 15)
p1 = Person(name : "kim", age : 15)
/* 결과
park 생성
kim 생성
park 삭제
*/
구조체 vs 클래스
구조체 | 클래스 | |
상속 | X | O |
타입캐스팅 | X | O |
deinitializer | X | O |
참조 횟수 계산 | X | O |
728x90
'Swift' 카테고리의 다른 글
[Swift] 접근제어 (Access Control) (0) | 2021.01.17 |
---|---|
[Swift] 프로토콜 (Protocol) (0) | 2021.01.02 |
[Swift] 범위 연산자 (0) | 2020.12.28 |
[Swift] 타입캐스팅 (Type casting) (0) | 2020.12.28 |
[Swift] 메서드 (Method) (0) | 2020.12.26 |
댓글