훌이
후리스콜링개발
훌이

블로그 메뉴

  • 왈 (iOS APP)
  • Github
전체 방문자
오늘
어제
  • 전체 (171)
    • ⭐️ 개발 (140)
      • JAVA (4)
      • Web (5)
      • iOS & Swift (94)
      • iOS Concurrency (4)
      • Rx (18)
      • Git (6)
      • WWDC (1)
      • Code Refactor (3)
      • Server (1)
    • ⭐️ Computer Science (22)
      • 운영체제 (10)
      • 네트워크 (5)
      • PS (7)
    • 경제시사상식 (8)
    • 기타 등등 (0)

인기 글

최근 글

05-21 02:04

티스토리

hELLO · Designed By 정상우.
훌이

후리스콜링개발

[Swift] 타입 프로퍼티 왜 씀?
⭐️ 개발/iOS & Swift

[Swift] 타입 프로퍼티 왜 씀?

2022. 7. 21. 16:52
728x90
반응형

타입프로퍼티?

 

항상 tableViewCell이나 collectionViewCell 만들면 무의식적으로 반복해서 가장 먼저 만들어주던 코드

static let identifier = "BookTableViewCell"

 

이걸 왜 했던 걸까? 분명 그 당시에는 이유를 알고 있었는데.. 명확하게 설명 못하는 걸 보면 몰랐떤 것이지..

 

아무튼 그 이유를 오늘 다시 알게 돼서 내 말로 정리를 하자면,

 

테이블뷰/컬렉션뷰를 만들어 줄 때 cellForRowAt 그러니까, 테블뷰/컬렉션뷰에 사용할 셀을 재사용해주는 과정에서 

셀의 identifier을 문자열로 가져오는 경우가 있다.

이렇게...

 

그런데 이렇게 하다보면 휴먼에러로.. 오타가 나는 경우가 있고,

 

이걸 방지하기 위해서 

타입 프로퍼티를 통해 해당 셀의 identifier를 셀 파일 내에서 선언해서 가져온다.

 

이때 나오는 개념이 타입 프로퍼티다.

 

타입 프로퍼티는 무엇인가.

쉽게 말하면 static이 붙은 거임


그 전에 프로퍼티는 무엇인가?

우리는 프로퍼티를 클래스/구조체 내에 있는 변수나 상수를 프로퍼티라고 부른다. 함수는 메소드라고 부르고.


좀 더 이야기를 해보자면

프로퍼티는 기능으로 나누면 저장 프로퍼티와 연산 프로퍼티 그리고 감시자 프로퍼티로 나눌 수 있다.

 

저장 프로퍼티는 선언과 동시에 초기화가 되어 있는 아이이다.

연산 프로퍼티는 아직 모르겠고요, 이름으로 치면 연산이 된다~ ezr

 

그리고 메모리 측면에서 보면 인스턴스 프로퍼티랑 타입 프로퍼티로 나눌 수 있다.

 

인스턴스 프로퍼티와 타입 프로퍼티의 차이점은 외적으로 봤을 때는 static이 붙고 안 붙고 차이이다.

근데 메모리 관점에서 보면 이런 거다.

 

타입 프로퍼티는 유일무이 the only임

그래서 타입 프로퍼티로 인스턴스를 생성하고 나서 호출을 해야만 메모리에 올라가고 초기화가 된다.

그리고 한 번 올라가면 앱이 꺼지기 전까지 메모리에서 사라지지 않는다.

글구 매번 생성되는 게 아니라 딱 한 번 생성되는 아이임..

 

매번 인스턴스를 생성해줘야 하는 저장 프로퍼티랑 다름

 

 

보면 이렇게 다름

title이라는 인스턴스 프로퍼티는 사용하려면 꼭 Book 클래스의 인스턴스를 따로 만들어 준 후에 접근 가능하다.

근데 author이라는 타입 프로퍼티는 사용하려면 따로 인스턴스를 만들지 않고 클래스에서 바로 접근 가능하다.

 

그렇기 때문에 타입 프로퍼티는 무조건 클래스에서 생성과 동시에 초기화를 해줘야만 한다.

그렇지 않으면 어케 접근하겠어!!!!!

class Book {
  let title = "어서 오세요, 휴남동 서점입니다"
  
  static let author = "황보름"
 }
// 인스턴스 프로퍼티

let book = Book()
book.title
// 타입 프로퍼티
Book.author

 


근데 그러면 타입 프로퍼티를 왜 씀? 뭐가 좋아서 쓸까????????

인스턴스가 매번 생성되면 매번 메모리에 올라가 -> 

근데 타프는 딱 한 번만 메모리에 올라가 -> 

당연히 한 번 올라가는 게 좋겠지..

 

그럼 왜 셀 identifier를 타입 프로퍼티로 선언해주는 건가?

우선, Jack님께 여쭤보니 우선 구조상으로 그렇게 잡아주는 것이라고 말씀하심


그리고 타입 프로퍼티도 var로 선언되면 접근해서 수정이 가능함

안되는 줄 알았는데 되더라고?

 

 

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'⭐️ 개발 > iOS & Swift' 카테고리의 다른 글

[Swift] Property Observer - didSet / willSet  (0) 2022.07.27
[Swift] 타입/인스턴스 - 저장/연산 프로퍼티  (0) 2022.07.27
[iOS] cell shadow + cornerRadius 같이 주는 방법  (0) 2022.07.21
[iOS] Enum으로 코드 리팩토링  (0) 2022.07.19
[iOS] for - in / forEach 동작구조?  (0) 2022.07.19
    '⭐️ 개발/iOS & Swift' 카테고리의 다른 글
    • [Swift] Property Observer - didSet / willSet
    • [Swift] 타입/인스턴스 - 저장/연산 프로퍼티
    • [iOS] cell shadow + cornerRadius 같이 주는 방법
    • [iOS] Enum으로 코드 리팩토링
    훌이
    훌이

    티스토리툴바