티스토리 뷰

728x90

 

코드를 보다보면 아래처럼 함수(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는 추후 정리하고 링크 해놓을게요!

 

정리 완료 !!

 

https://peppo.tistory.com/13

 

staticoverride가 되지 않고!

classoverride가 된다!

 

 

아래 코드를 보면 감이 올겁니다.😤

먼저 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

 

 

어떨때 사용하나?

위 정의에서 설명했듯 타입 프로퍼티는 특정 타입의 모든 인스턴스에 공통으로 사용 되는 값을 정의할때 유용하게 사용된다! 

 

 

 

이해하는데 도움이 됐어요.

https://babbab2.tistory.com/120?category=828998

https://thoonk.tistory.com/m/55?category=901054

728x90

'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