일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- LoB
- PHP
- System
- HTML
- windosw 문자열
- 재귀
- 정렬 알고리즘
- C
- 파일 시스템
- 암호수학
- 스택
- ftz
- 자료구조
- level13
- ftz level13
- 큐
- windosws wbcs
- 시간복잡도
- OSI
- pwnable.kr
- 파이썬
- Stack
- 미로 탐색 알고리즘
- 백준
- War Game
- c언어
- web
- Java
- SWiFT
- 두근두근 자료구조
Archives
- Today
- Total
나의 기록, 현진록
[Swift] 구조체와 클래스 본문
반응형
스위프트 프로그래밍 3판 - 야곰 지음
9.1 구조체
9.1.1 구조체 정의
struct 구조체이름{
프로퍼티와 메소드
}
struct BasicInformation {
var name: String
var age: Int
}
var info: BasicInformation = BasicInformation(name: "hyunjin", age: 24)
info.name = "abc" //변경 가능
info.age = 100 //변경가능
let subinfo: BasicInformation = BasicInformation(name: "rupy", age: 50)
subinfo.name = "abc" //변경 불가
subinfo.age = 100 //변경 불가
구조체에 기본 생성된 이니셜라이저의 매개변수는 구조체의 프로퍼티 이름으로 자동 저장됩니다.
구조체를 상수 let으로 선언하면 인스턴스 내부의 프로퍼티 값을 변경할 수 없고, 변수 var로 선언하면 내부의 프로퍼티가 var로 선언된 경우에 값을 변경해줄 수 있습니다.
9.2 클래스
9.2.1 클래스 정의
class 클래스이름{
프로퍼티와 메소드들
}
class 클래스이름: 부모클래스이름{
프로퍼티와 메소드들
}
class Person{
var height: Float = 0.0
var weight: Float = 0.0
}
var hyunjin: Person = Person()
hyunjin.height = 184.6
hyunjin.weight = 72.1
let subinfo: Person = Person()
subinfo.height = 123.4
subinfo.weight = 123.4
구조체와 다르게 클래스의 인스턴스는 참조 타입이므로 클래스의 인스턴스를 상수 let으로 선언해도 내부 프로퍼티 값을 을 변경할 수 있습니다.
9.2.3 클래스 인스턴스의 소멸
클래스의 인스턴스는 참조 타입이므로 더는 참조할 필요가 없을 때 메모리에서 해제됩니다. 이 과정을 소멸이라고 하는데 소멸되기 직전 deinit 메소드가 호출됩니다. 클래스 내부에 deinit 메소드를 구현해주면 소멸되기 직전 deinit 메소드가 호출됩니다. 이를 디이니셜라이저(Deinitializer)라고 부릅니다. deinit은 클래스 당 하나만 구현할 수 있으며, 매개변수와 반환 값을 가질 수 없습니다. 소괄호도 적어주지 않습니다.
class Person{
var height: Float = 0.0
var weight: Float = 0.0
deinit {
print("Person 클래스의 인스턴스가 소멸됩니다.")
}
}
var hyunjin: Person? = Person()
hyunjin = nil
반응형
'Programming > Swift' 카테고리의 다른 글
[Swift] 10.1.2 지연 저장 프로퍼티 (0) | 2021.07.16 |
---|---|
[Swift] 구조체와 클래스의 차이 / 식별연산자 (0) | 2021.07.15 |
[Swift] 8.2.2 옵셔널 바인딩 (0) | 2021.07.14 |
[Swift] 8.1 옵셔널 (0) | 2021.07.13 |
[Swift] 7.3 중첩함수 7.4 종료되지 않은 함수 7.5 반환을 무시하는 함수 (0) | 2021.07.13 |