Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 독학
- 직장인자기계발
- Git
- xcode
- 인스펙터
- 직장인인강
- RawValue
- swift
- Background
- TableView
- 30개프로젝트로배우는iOS앱개발withSwift초격자패키지Online
- Optional Chaining
- userDefaults
- 패캠챌린지
- Threading
- 기본문법
- 문자열 보간법
- 함수
- 프로퍼티 관찰자
- beginAsyncWrite
- 패스트캠퍼스후기
- 옵셔널 체이닝
- enum
- cancelAsyncWrite
- SeSAC
- Realm
- 열거형
- ios
- switch
- 패스트캠퍼스
Archives
- Today
- Total
아삭아삭 iOS 개발
[Swift 독학] 패스트캠퍼스 챌린지 20일차_구조체와 클래스 비교 본문
swift에서 클래스와 구조체는 문법과 사용방법이 거의 유사합니다.
오늘은 클래스와 구조체의 공통점과 차이점에 대해 알아보겠습니다!
그전에 class, struct에 대한 내용을 안보셨다면, 먼저 해당 정리글을 참고하시면 좋습니다.
■ class와 struct의 공통점
- 값을 저장하는 프로퍼티, 함수적 기능을 제공하는 메서드 선언 가능
→ 구조화된 데이터와 기능을 갖을 수 있음 - 내부 값에 점구문(.)을 사용하여 접근 가능(서브 스크립트)
- 생성자를 사용해 초기화 정의 가능
- extension을 사용해 기능적 확장 가능
- protocol을 채택하여 특정기능 설정 가능
- 데이터를 용도에 맞게 표현하고자 할 경우 용이
→ 새로운 사용자 정의 데이터 타입을 생성 가능
■ class와 struct의 차이점
1) 클래스
- 참조타입(reference type)
- ARC(Automatic Reference Counting)로 메모리를 관리
→ ARC 메모리 관리방식은 별도 포스팅으로 추후 자세히 정리 예정 - 상속이 가능
→ 한 클래스가 다른 클래스의 특성을 상속 가능 - 타입 캐스팅을 통해 런타임에서 클래스 인스턴스의 타입을 확인하고 해석 가능
- 초기화 해제구문(deinit)을 사용하여 클래스 인스턴스의 메모리 할당을 해제할 수 있음
- 하나 이상의 클래스 인스턴스 참조 가능
→ 같은 클래스 인스턴스를 여러 개의 변수에 할당한 뒤, 값을 변경 시키면 모든 변수에 영향을 줌
(즉, '메모리'가 복사 됨)
→ 변수를 복사하더라도 하나의 인스턴스 주소값을 가리키고 있으므로 복사본과 원본 모두 같은 값을 갖음
2) 구조체
- 값 타입(value type)
- 구조체 변수를 새로운 변수에 할당할 때마다 새로운 구조체가 할당됨
(변수를 할당하면 스택 영역에 값이 저장되기 때문에 arc로 메모리 관리가 안됨) - 상속 불가능
→ 같은 구조체를 여러 개의 변수에 할당한 뒤, 값을 변경할 경우 다른 변수에 영향을 주지 않음
(즉, '값 자체'가 복사 됨)
※ 클래스를 사용할수록 복잡성이 증가하므로 일반적으로는 swift에서는 구조체(, 열겨형) 사용을 선호
※ Apple 프레임워크의 대부분은 클래스 사용
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Swift' 카테고리의 다른 글
[Swift 독학] 패스트캠퍼스 챌린지 22일차_프로퍼티_연산, 타입 프로퍼티 (0) | 2022.02.14 |
---|---|
[Swift 독학] 패스트캠퍼스 챌린지 21일차_프로퍼티_저장 프로퍼티 (0) | 2022.02.13 |
[Swift 독학] 패스트캠퍼스 챌린지 19일차_초기화 (0) | 2022.02.11 |
[Swift 독학] 패스트캠퍼스 챌린지 18일차_클래스 (0) | 2022.02.10 |
[Swift 독학] 패스트캠퍼스 챌린지 17일차_구조체 (0) | 2022.02.09 |