2022. 12. 2. 04:19ㆍApple/Swift
메소드와 프로퍼티
struct Resolution {
var width = 0
var height = 0
func desc() -> String {
return "Return 구조체"
}
}
class VideoMode {
var interlaced = false
var frameRate = 0.0
var name: String
func desc() -> String {
return "VideoMode 클래스"
}
}
Resolution 구조체
픽셀 기반 디스플레이의 해상도 정보를 관리하기 위한 목적, width 랑 height 라는 두 개의 저장 프로퍼티가 있음.
저장 프로퍼티: 특정 값을 저장하기 위해 클래스나 구조체의 내부에 정의된 변수나 상수
두 프로퍼티는 초기값이 0 대입 -> 타입 추론 규칙에 의해 Int 데이터 타입 형식으로 추론됨.
VideoMode 클래스
비디오 디스플레이에서 표현되는 비디오에 대한 정보를 관리하기 위한 목적이라고 생각하면 됨.
세 개의 저장 프로퍼티 정의
- interlaced : Bool 타입
- framerate: 0.0 이 초기값인 Double 타입
- name: 옵셔널 문자열로 정의, name 프로퍼티는 초기값 할당되지 않았는데, 옵셔널 타입 프로퍼티에 초기값이 할당되지 않으면 자동으로 nil 이라는 기본값으로 초기화됨
- 이 때 name 프로퍼티에 값이 존재하지 않음 으로 해석
인스턴스
구조체나 클래스는 실행할 수 있는 객체가 아니라, 값을 담을 수 있는 실질적인 그릇을 만들어내기 위한 일종의 틀, 원형(Origin)
-> 여기에 값을 담을 수 있는 것이 아니라 이 원형을 바탕으로 실제로 값을 담을 그릇을 찍어내야만 값을 담을 수 있다.
틀 역할을 하는 클래스나 구조체를 정의하고 이를 바탕으로 실질적으로 값을 담을 여러 개의 그릇을 만들어내는 것, 이것이 객체지향 프로그래밍의 원리이다.
이 때 원형 틀을 이용하여 찍어낸 그릇을 인스턴스(Instance) 라고 한다.
-> 타입 설계도를 사용해 메모리 공간을 할당받은 것이 인스턴스이다.
구조체와 클래스의 인스턴스를 생성하는 방식은 거의 같음.
// Resolution 구조체에 대한 인스턴스를 생성하고 상수 InsRes에 할당
let insRes = Resolution()
// VideoMode 클래스에 대한 인스턴스를 생성하고 상수 insVMode 에 할당
let insMode = VideoMode()
함수: () 괄호의 의미는, 함수 호출 연산자
클래스, 구조체: () 괄호 의미, 클래스나 구조체를 초기화하여 인스턴스를 생성하는 역할을 함( 인스턴스 생성 연산자 )
프로퍼티에 접근하려면 반드시 인스턴스에 먼저 접근해야 함.
방법: 점 문법(Dot Syntax) 을 이용해 인스턴스의 하위 객체에 접근할 수 있음. 점(.)을 이용하여 프로퍼티에 접근할 때는 인스턴스 이름 바로 다음에 점으로 구분하여 프로퍼티의 이름을 작성한다.
<인스턴스 이름>.<프로퍼티 이름>
let width = insRes.width
print("insRes 인스턴스의 width 값은 \(width)입니다.")
'Apple > Swift' 카테고리의 다른 글
[ 이메일 유효성 체크 ] - 이메일 가입이 아무거나 다된다고? (1) (0) | 2024.08.07 |
---|---|
동시성(Concurrency)을 대하는 Swift 의 자세 1 - DispatchQueue (0) | 2024.02.02 |
Swift 기본 가이드라인 - part 1 (0) | 2023.12.14 |
Macro 에 대해서 알아보자. ( 수정중 ) (0) | 2023.11.12 |
[Swift ] Escape Sequence - 문자열처리 (0) | 2022.05.21 |