1. 클래스와 구조체의 공통점
- 값을 저장할 프로퍼티를 선언할 수 있습니다.
- 함수적 기능을 하는 메서드를 선언할 수 있습니다.
- 내부 값에 . 을 사용하여 접근할 수 있습니다.
- 생성자를 사용해 초기 상태를 설정할 수 있습니다.
- extension을 사용하여 기능을 확장할 수 있습니다.
- Protocol을 채택하여 기능을 설정할 수 있습니다.
2.클래스와 구조체의 차이점
2-1. 클래스
- 참조 타입입니다.
- ARC로 메모리를 관리합니다.
- 상속이 가능합니다.
- 타입 캐스팅을 통해 런타임에서 클래스 인스턴스의 타입을 확인할 수 있습니다.
- deinitdㅡㄹ 사용하여 클래스 인스턴스의 메모리 할당을 해제할 수 있습니다.
-같은 클래스 인스턴스를 여러 개의 변수에 할당한 뒤 값을 변경 시키면 모든 변수에 영향을 줍니다.(메모리가 복사 됨)
2-2. 구조체
- 값 타입입니다.
- 구조체 변수를 새로운 변수에 할당할 때마다 새로운 구조체가 할당됩니다.
- 즉 같은 구조체를 여러 개의 변수에 할당한 뒤 값을 변경시키더라도 다른 변수에 영향을 주지 않습니다.(값 자체를 복사)
class SomeClass {
var count: Int = 0
}
struct SomeStruct {
var count: Int = 0
}
var class1 = SomeClass() //SomeClass
var class2 = class1 //SomeClass
var class3 = class1 //SomeClass
class3.count = 2 //SomeClass
class1.count //2
var struct1 = SomeStruct() //SomeStruct
var struct2 = struct1 //SomeStruct
var struct3 = struct1 //SomeStruct
struct2.count = 3 //SomeStruct
struct3.count = 4 //SomeStruct
struct1.count //0
struct2.count //3
struct3.count //4
'개발 > Ios(Swift)' 카테고리의 다른 글
IOS 스위프트(Swift) 문법 - 타입캐스팅 (0) | 2021.08.19 |
---|---|
IOS 스위프트(Swift) 문법 - 상속 (0) | 2021.08.19 |
IOS 스위프트(Swift) 문법 - 프로퍼티 (0) | 2021.08.17 |
IOS 스위프트(Swift) 문법 - 초기화 구문 init (0) | 2021.08.17 |
IOS 스위프트(Swift) 문법 - 클래스 (0) | 2021.08.17 |