티스토리 뷰
코드를 보다보면 아래처럼 함수(func) 선언 한것 앞에 static, class 라는 걸 많이 보게되는데
static let shared = MyAlamofireManager()
그냥 선언하면 안되나 static은 뭐야..??
static 과 class 에 대해 알아보기 전에 타입 프로퍼티 를 짚고 넘어가야 됩니다 ㅠ
타입 프로퍼티 (Type property)
특정 타입에 속한 프로퍼티로 그 타입에 해당하는 단 하나의 프로퍼티만 생성됩니다.
이 타입 프로퍼티는 특정 타입의 모든 인스턴스에 공통으로 사용 되는 값을 정의할때 유용합니다.
또한 저장 타입 프로퍼티는 타입자체에 초기자(initializer)가 없기 때문에 항상 '초기값'을 지정해서 사용해야 합니다.
어우 딱딱해...
그냥 타입 프로퍼티를 사용하려면 앞에 static 또는 class 를 붙이면 된다.
요렇게 !
class Human {
let name: String = "roy" // 저장 프로퍼티
var nickname: String { // 연산 프로퍼티
return name + "는 peppo"
}
}
static 붙이기!!
class Human {
static let name: String = "roy" // 저장 타입 프로퍼티
static var nickname: String { // 연산 타입 프로퍼티
return name + "는 peppo"
}
}
이렇게 저장 타입 프로퍼티와 연산 타입프로퍼티 로 만들어주고
초기값! 을 지정해줘야 합니다.
초기값 지정 안해주면 ?
initializer가 필요하다는 오류 문구가 나온다!
그러므로 초기값을 지정해주자!
타입 프로퍼티 접근
타입 프로퍼티는 .(dot) 문법을 통해 접근합니다.
Human.name 이렇게
자 그럼 이제 타입프로퍼티가 뭔지도 어느정도 알았고, 접근 하는것도 알았으니
오늘은 static 과 class 에 대해 알아봅시다.
static, class 의 차이점
결론적으로 override의 차이다.
override는 추후 정리하고 링크 해놓을게요!
정리 완료 !!
static은 override가 되지 않고!
class는 override가 된다!
아래 코드를 보면 감이 올겁니다.😤
먼저 class 연산 타입프로퍼티 ( override👌 )
class Human {
class var nickname: String { // 연산 타입 프로퍼티
return "nickname is person"
}
}
class Roy: Human {
override class var nickname: String { // 연산 타입 프로퍼티
return "nickname is peppo"
}
}
// .dot 문법으로 접근
Human.nickname // "nickname is person"
Roy.nickname // "nickname is peppo"
다음 static
class Human {
static var nickname: String {
return "nickname is person"
}
}
class Roy: Human {
override static var nickname: String { // 에러 Cannot override static property
return "nickname is peppo"
}
}
Human.nickname
Roy.nickname
어떨때 사용하나?
위 정의에서 설명했듯 타입 프로퍼티는 특정 타입의 모든 인스턴스에 공통으로 사용 되는 값을 정의할때 유용하게 사용된다!
이해하는데 도움이 됐어요.
'iOS' 카테고리의 다른 글
[iOS] UIKit 에서 실시간 Preview 보는 방법 (0) | 2021.11.05 |
---|---|
[Swift] Generic 제네릭 (0) | 2021.10.30 |
[Swift] inout parameter (0) | 2021.10.26 |
공부해야할것 (0) | 2021.10.21 |
[Xcode] 앱 빌드가 느려졌을때 (app launch slow on device) (0) | 2021.10.04 |
- Total
- Today
- Yesterday
- Swift 내림차순
- removeLast()
- iOS error
- 원티드 프리온보딩
- ios
- Swift
- Combine: Asynchronous Programming with Swift
- Swift joined()
- Swift 알고리즘
- Swift joined
- Swift inout
- Swift 프로퍼티
- Swift final
- Swift Leetcode
- RIBs tutorial
- CS 네트워크
- swift protocol
- swift 고차함수
- Swift Error Handling
- swift programmers
- Swift init
- swift reduce
- Class
- swift (programmers)
- swift property
- Swift 프로그래머스
- Swift RIBs
- 2023년 회고
- RTCCameraVideoCapturer
- Swift ModernRIBs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |