목록프로퍼티 (3)
study record
Struct 내 Class 프로퍼티는 복사될까? Struct는 값 타입으로 값을 복사한다.그렇다면 Struct 내의 Class 프로퍼티는 복사될까 아니면 참조 주소 값을 공유하게 될까? 정답은 Struct 내의 Class 프로퍼티는 참조 주소 값을 공유한다.이에 다음과 같은 문제가 발생할 수 있다. 📌 "Struct의 class 프로퍼티에서 생길 수 있는 문제?1. 문제 개요Swift에서 struct(값 타입) 내에 클래스(참조 타입) 프로퍼티를 포함할 때, 참조 타입이므로 원본이 공유될 수 있는 문제가 있다.특히 클래스가 상속(subclassing) 될 수 있는 경우, 원치 않는 변경이 발생할 수 있다. 2. 어떤 문제가 발생할 수 있나?만약 struct 내에 참조 타입인 클래스 프로퍼티가 있고, ..
인스턴스 생성 초기화 과정은 새로운 인스턴스를 사용하기 위하여 저장 프로퍼티의 초깃값을 설정하는 등의 일을 한다. 이니셜라이저를 정의하면 초기화 과정을 직접 구현할 수 있다. 이렇게 구현된 이니셜라이저는 새로운 인스턴스를 생성할 수 있는 특별한 메서드가 된다. 스위프트의 이니셜라이저는 반환 값이 없다. 그저 초기화하는 용도이다. 이니셜라이저는 func 키워드를 사용하지 않고 오로지 init 키워드를 사용하여 이니셜라이저 메서드임을 표현한다. init 메서드는 클래스, 구조체, 열거형 등의 구현부에 위치한다. 다만 클래스의 지정 이니셜라이저는 익스텐션에서 구현해줄 수 없다. class SomeClass { init() { // 초기화할 때 필요한 코드 } } struct SomeStruct { init()..
프로퍼티 프로퍼티는 크게 저장 프로퍼티와 연산 프로퍼티, 타입 프로퍼티로 나눌 수 있다. 저장 프로퍼티는 인스턴스의 변수 또는 상수를 의미한다. 구조체와 클래스에서만 사용할 수 있다. 연산 프로퍼티는 값을 저장한 것이 아니라 특정 연산을 실행한 결괏값을 의미한다. 클래스, 구조체, 열거형에서 쓰일 수 있다. 저장 프로퍼티와 연산 프로퍼티는 특정 타입의 인스턴스에 사용되는 것을 뜻하지만 특정 타입에 사용되는 프로퍼티가 있다. → 타입 프로퍼티 저장 프로퍼티 클래스 또는 구조체의 인스턴스와 연관된 값을 저장한다. 구조체는 프로퍼티에 맞는 이니셜라이저를 자동으로 제공한다. 전달인자로 초깃값을 넘긴다. 초깃값을 이미 할당했다면 넘길 필요는 없다. 클래스는 저장 프로퍼티에 초깃값을 지정하거나 사용자 정의 이니셜라..