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 로 타입 캐스팅이 불가하다.