- struct / class 기본개념 익히기.
- struct / class 각각의 역할과 차이점 알아보기.
구조체는 struct 키워드로 정의합니다.
struct /*구조체 이름*/ {
// 프로퍼티와 매서드들
}
클래스는 class 키워드로 정의합니다.
class /*클래스 이름*/ {
// 프로퍼티와 매서드들
}
class Hello {
var name: String = ""
var year: Int = 0
deinit {
// 클래스의 인스턴스를 소멸
}
}
var study: Hello? = Hello()
study = nil // 인스턴스가 소멸되어 값이 없기때문에 nil
여기서 알아보아야 할것은 구조체는(swift의 뼈대) 클래스는(ios의 뼈대)라는 것입니다.
xcode상의 화면으로 알아보도록해요.
위에 클래스 뷰 컨트롤러는 UIViewController를 상속받고 있어요
상속은 : 로 받을 수 있답니다.
UIViewController를 커맨드를 눌러 클릭해서 들어가보면
이렇게 클래스로 선언되어있네요!!
swift의 뼈대는 구조체다?? 라는것도 보여드리기 위해 위의 화면에 프로퍼티도 정의해놨는데요.
프로퍼티 타입의 String과 Int를 커맨드를 눌러 들어가보게되면
이렇게 구조체로 정의되어있는것을 볼수있어요.
클래스는 상속이 가능 해서 모든 기능을 물려받기위해(참조) ios프레임워크의 뼈대로
구조체는 값을 할당하는 swift의 뼈대로 사용되고있는것을 알수있습니다!!
그럼 언제 구조체를 쓰고 언제 클래스를 쓰는가??
구조체 - 데이터를 함수의 전달인자로 전달하면 인스턴스가 새로 생성된다.
클래스 - 새로운 인스턴스가 아닌 기존의 인스턴스 참조를 전달한다.
함수의 전달인자뿐만 아니라 새로운 변수에 할당될 때도 마찬가지이다.
애플의 가이드라인에서 다음 조건 중 하나 이상에 해당한다면 구조체의 사용을 권장합니다.
Tip
다른 프로그래밍 언어에서는 클래스의 인스턴스를 객체라고 부릅니다.
물론 스위프트에서도 객체라는 표현이 틀린 것은 아니지만, 공식문서에서는 인스턴스라는 용어를 사용합니다.