안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 값 타입과 참조 타입에 대해 공부합니다.
값 타입
- struct 구조체
- enum 열거형
참조 타입
- class 클래스
Class
: OOP(객체 지향 프로그래밍) 관점에서의 클래스입니다.
: 단일상속만 가능합니다. (다중 상속 불가)
: 인스턴스 메소드와 타입(스태틱) 메소드를 가집니다.
: 인스턴스 프로퍼티와 타입(스태틱) 프로퍼티를 가집니다.
: Apple Framework 의 대부분의 큰 뼈대는 모두 클래스로 구성되어 있다고 하네요.
Struct
: 값 타입입니다.
: 상속을 지원하지 않습니다.
: Swift의 대부분의 큰 뼈대는 모두 구조체로 구성되어 있다고 합니다.
Enum
: 값 타입입니다.
: 다른 언어의 열거형과는 많이 다른 존재입니다.
: 상속을 지원하지 않습니다.
: 인스턴스 메소드와 타입(스태틱) 메소드를 가집니다.
: 인스턴스 연산 프로퍼티와 타입(스태틱) 연산 프로퍼티를 가집니다.
: 비슷한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정의합니다.
예) 계절, 성별, 월
: 열거형 자체가 하나의 데이터 타입이고, 열거형의 case 하나하나가 전부 유의미한 값으로 취급됩니다.
* 구조체는 언제? 사용을 할까요?
1. 참조가 아니라 복사를 필요로 할 때 사용합니다.
2. 상속을 받을 필요가 없을 때 사용합니다.
- Apple Framework 에서 프로그래밍을 할 때에는 대부분 클래스를 사용합니다.
데이터 전달 시
값 타입 : 값을 복사해서 전달합니다.
참조 타입 : 값의 메모리 위치를 전달합니다.
예제)
struct StructIsValueType {
var property = 1
}
class ClassIsReferenceType {
var property = 1
}
let valueType1 : StructIsValueType = StructIsValueType()
var valueType2 = valueType1
valueType2.property = 2
print(\(valueType1.property) // 1
print(\(valueType2.property) // 2
let referenceType1 : ClassIsReferenceType = ClassIsReferenceType()
var referenceType2 = referenceType1
referenceType2.property = 2
print(\(referenceType1.property) // 2
print(\(referenceType2.property) // 2
위 예제를 통해 값 타입과 참조 타입의 차이점에 대해 알아보았습니다.
이상입니다.
다음 포스팅에서는 클로저에 대해 공부하겠습니다.
'Swift3(스위프트3)' 카테고리의 다른 글
swfit3 스위프트3 프로퍼티와 감시자 (0) | 2017.07.06 |
---|---|
swift3 스위프트3 클로저 closure (0) | 2017.07.05 |
swift3 스위프트3 열거형 enum (0) | 2017.07.04 |
swift3 스위프트3 구조체(struct)와 클래스(class) (0) | 2017.07.04 |
swift3 스위프트3 Optional 옵셔널이란? (0) | 2017.07.04 |