728x90
반응형
import Cocoa
// 09_ 값타입과 참조타입 p.20
/*
@ Class
- 전통적인 OOP 관점에서의 클래스
- 단일 상속
- 메소드
- 프로퍼티
- 참조타입 @
@ Struct (스위프트는 Struct언어이다.)
- 다양한 형태로 사용 가능
- 상속 불가
- 메소드
- 프로퍼티
- 값 타입
- 구조체의 사용 시기
- 연관된 값들을 모아서 하나의 데이터 타입으로 선언하고 싶을 때
- 다른 객체 또는 함수등으로 전달 될 때
- 참조가 아닌 복사를 원할 때
- 자신을 상속할 필요가 없거나 상속 받을 필요가 없을 때
@ Enum (열거형)
- 상속 불가
- 메소드
- 프로퍼티
- 값 타입
- 유사한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정리
@ Value와 Reference 차이
- Value : Data값을 전달할 때 값을 복사하여 전달
- Reference : Data값을 전달할 때 값의 메모리 위치를 전달
*/
// Class, Struct 비교 (swift에서는 Struct 사용 권장)
struct ValueType {
var property = 1
}
let firstStructInstance = ValueType()
var secondStructInstance = firstStructInstance
secondStructInstance.property = 2
print("first struct instance property : \(firstStructInstance)")
print("second struct instance property : \(secondStructInstance)")
// per by value = 서로 다른 값을 가진다.
class ReferenceType {
var property = 1
}
let firstClassReference = ReferenceType()
var secondClassReference = firstClassReference
secondClassReference.property = 2
print("first class Reference property : \(firstClassReference.property)")
print("second class Reference property : \(secondClassReference.property)")
// per by reference = 같이 변한다.
// 둘중에 하나는 잘 써야 한다.
반응형
'개발자 코드(Code) > Swift(문법)' 카테고리의 다른 글
Swift) 11_클래스 (0) | 2020.09.24 |
---|---|
Swift) 10_Struct (0) | 2020.09.24 |
Swift) 08_옵셔널.Playground (0) | 2020.09.24 |
Swift) 07_반복문.Playground (0) | 2020.09.24 |
Swift 06.컬렉션 set집합연산 (0) | 2020.08.20 |