티스토리 뷰
1. 구조체
- 구조체는 값(Value)타입입니다.
- Swift의 구조체는 타입을 정의하는 것이기 때문에 대문자 카멜케이스를 사용합니다.
- struct 키워드를 사용해 정의 할 수 있습니다.
struct 구조체이름 {
//구조체 내용
}
- 프로퍼티는 인스턴스 변수를 의미합니다.
- 메서드는 구조체 안에 들어있는 함수를 의미합니다.
- var로 선언하면 가변 프로퍼티입니다.
- let로 선언하면 불변 프로퍼티 입니다.
- static 키워드를 사용하면 타입 프로퍼티/메서드로 사용할 수 있습니다.
struct Example {
var mutableProperty: Int = 100 //가변 프로퍼티 (값 변경 가능)
let immutableProperty: Int = 100 // 불변 프로퍼티 (값 변경 불가능)
static var typeProperty: Int = 100 // 타입 프로퍼티
// 인스턴스 메서드
func instanceMethod(){
print("Hi instanceMethod")
}
//타입 메서드
static func typeMethod(){
print("Hi typeMethod")
}
}
- var로 선언한 구조체는 값 변경이 가능힙니다. 하지만, 구조체 내부에 let으로 선언한 불변 값은 변경 불가능합니다.
- 타입 프로퍼티/메서드는 인스턴스에서 사용할 수 없습니다.
//가변 인스턴스 생성
var mutable: Example = Example()
//가변 프로퍼티 값 변경 가능
mutable.mutableProperty = 200
print(mutable.mutableProperty) // 200 출력
mutable.immutableProperty = 300 // error 발생 (불변 프로퍼티 값 변경 불가)
//불변 인스턴스 생성
let immutable: Example = Example()
//불변 인스턴스는 가변 프로퍼티도 수정 불가
immutable.mutableProperty = 200 // error 발생
// 타입 프로퍼티와 메서드 사용
Example.typeMethod()
Example.typeProperty = 200
//타입 프로퍼티/메소드는 인스턴스에서 사용 불가
mutable.typeMethod() // error 발생
mutable.typeProperty = 200 // error 발생
2. 클래스
- 클래스는 참조(reference) 타입입니다.
- Swift의 클래스는 대문자 카멜케이스를 사용해 정의합니다.
class 클래스이름 {
//클래스 내용
}
- Swift의 클래스는 다중상속이 불가합니다.
- 재정의가 불가한 static 메서드와, 재정의가 가능한 class 메서드가 있다
class Example {
var mutableProperty: Int = 100 //가변 프로퍼티 (값 변경 가능)
var immutableProperty: Int = 100 // 불변 프로퍼티 (값 변경 불가능)
static var typeProperty: Int = 100 // 타입 프로퍼티
// 인스턴스 메서드
func instanceMethod(){
print("Hi instanceMethod")
}
//타입 메서드
//상속시 재정의 불가 타입 메서드 - static 키워드 사용
static func typeMethod(){
print("Hi typeMethod")
}
//상속시 재정의 가능 타입 메서드 - class 키워드 사용
class func classMethod(){
print("class typeMethod")
}
}
- 클래스 인스턴스는 let 또는 var, 둘 중 무엇으로 선언해도 가변 프로퍼티를 수정할 수 있습니다.
- 클래스 내에 불변 프로퍼티로 선언된 값은 수정이 불가합니다.
//가변 인스턴스 생성
var mutable: Example = Example()
//가변 프로퍼티 값 변경 가능
mutable.mutableProperty = 200
print(mutable.mutableProperty) // 200 출력
mutable.immutableProperty = 300 // error 발생 (불변 프로퍼티 값 변경 불가)
//불변 인스턴스 생성
let immutable: Example = Example()
//불변 인스턴스도 가변 프로퍼티 수정 가능
immutable.mutableProperty = 200
// 타입 프로퍼티와 메서드 사용
Example.typeMethod()
Example.typeProperty = 200
//타입 프로퍼티/메소드는 인스턴스에서 사용 불가
mutable.typeMethod() // error 발생
mutable.typeProperty = 200 // error 발생
* [부스트코스] iOS 프로그래밍을 위한 스위프트 기초 학습 후 정리한 내용입니다.
'iOS > Swift' 카테고리의 다른 글
Swift 문법 (10) - 클로저 (Closure) (0) | 2020.12.09 |
---|---|
Swift 문법 (9) - 열거형 (0) | 2020.12.08 |
Swift 문법 (7) - 옵셔널 (0) | 2020.12.06 |
Swift 문법 (6) - 반복문 (0) | 2020.12.06 |
Swift 문법 (5) - 조건문 (0) | 2020.12.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스
- GraphDB
- boj
- disposeBag
- ARKit
- cocoapods
- rxswift6
- Reactivex
- 카카오인턴십
- SwiftUI
- ios
- Kotlin
- Lottie
- Swift
- 코코아팟
- 백준
- DispatchQueue
- coreml
- blendshape
- bounds
- 안드로이드
- SWEA
- Neo4j
- 백준온라인저지
- 알고리즘
- C++
- blendshapes
- rxswift
- infallible
- mergesort
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함