[iOS] Class vs. Structure

Eugenie·2022년 4월 12일
0

struct SomeStructure {
	// property and method definition goes here
}

class SomeClass {
	// property and method definition goes here
}

// Create an instance
let someStructure = SomeStructure()
let someClass = SomeClass()

구조체와 클래스는

프로그램의 코드를 추상화하기 위해 사용된다.

프로퍼티와 메소드를 사용하여,
구조화된 데이터와 기능을 가질 수 있다.

새로운 사용자 정의 데이터 타입을 만드는 것이다.

초기화(init) 를 정의하여, 초기 상태를 설정할 수 있다.

확장(extension) 할 수 있다.

프로토콜(protocol) 사용이 가능하다.

특정 값에 접근할 수 있는
서브스크립트(subscript) 문법 사용이 가능하다.

프로퍼티 값에 접근하고 싶다면, 점(dot) 문법을 사용한다.


Class는

참조 타입 [ Reference Type ] 이다.

cf.
참조 타입 [ Reference Type ]
변수나 상수에 값을 할당하거나 함수에 인자로 전달될 때
그 값이 복사되지 않고 참조된다는 의미

Heap Memory 영역에 할당된다.
따라서, 속도가 느리다.

런타임에 직접 allocate 하며,
reference counting 을 통해, deallocate 가 필요하다.

상속이 가능하다.

런타임에 타입캐스팅을 통해 클래스 인스턴스에 따라
여러 동작이 가능하다.

deinitalizer 가 존재한다.

Structure는

값 [ Value Type ] 타입이다.

cf.
값 타입 [ Value Type ]
함수에서 상수나 변수로 전달될 때
그 값이 복사되어 전달된다는 의미

값 타입이기 때문에, 멀티 스레드 환경에서
공유 변수로 인한 문제를 일으킬 확률이 적다.

Stack Memory 영역에 할당되므로 속도가 빠르다.

컴파일 타임에 컴파일러가
언제 메모리를 할당/해제할지 정확히 알고 있다.

상속이 불가능하다.

AnyObject 로 타입 캐스팅이 불가하다.


profile
🌱 iOS developer

0개의 댓글