개발자 코드(Code)/Swift(문법)

Swift) 09_값타입과 참조타입

Chain X 2020. 9. 24. 16:18
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