소피it블로그
[Swift] 100 Days of Swift - Day 10 정리 본문
https://www.hackingwithswift.com/100/10
1. 클래스의 경우 구조체 다르게 memberwise initializer이 없어서, 프라퍼티에 디폴트 값이 설정되어 있지 않은 경우 이니셜라이저를 직접 만들어줘야 함
2. 클래스는 구조체와 다르게 상속이 가능하다.
class childClass: parentClass { }
// 안에서 부모 클래스의 이니셜라이저를 언급할 경우 super.init()으로 써줘야 함
3. 자식클래스는 부모클래스의 메서드를 overriding할 수 있다.
override func funcName() { }
4. 다른 클래스에서 상속하지 않기를 원하는 경우 final 키워드를 사용해줌
final class className { }
5. 구조체의 경우, 인스턴스를 카피하면 두 개가 서로 별개의 인스턴스로 취급되어 하나를 변경해도 다른 것에 영향이 없다. 반면 클래스의 경우, 인스턴스를 카피하면 두 인스턴스가 같은 것을 "가리키게" 되어 하나를 바꾸면 나머지 하나도 동일하게 바뀐다.
6. deinitializer: 클래스가 destroy될 때 작동하는 코드
deinit { }
// 주의 () 안 씀
7. 클래스는 구조체와 다르게 mutating 키워드를 쓰지 않는다. 구조체에서는 구조체 그 자체가 상수면 그 안의 프라퍼티가 변수여도 바꿀 수 없었다. 반면 클래스의 경우, 클래스가 상수로 선언되었다 해도 그 안의 프라퍼티는 변수가 될 수 있다. 즉, 값이 바뀔 수 있다. 그게 싫다면 프라퍼티를 상수로 선언해야 함.
'개발_iOS > 스위프트' 카테고리의 다른 글
[Swift] 100 Days of Swift - Day 12 정리 (0) | 2022.03.31 |
---|---|
[Swift] 100 Days of Swift - Day 11 정리 (0) | 2022.03.29 |
[Swift] 100 Days of Swift - Day 9 정리 (0) | 2022.03.28 |
[Swift] 100 Days of Swift - Day 8 정리 (0) | 2022.03.27 |
[Swift] 100 Days of Swift - Day 7 정리 (0) | 2022.03.27 |