인프런 커뮤니티 질문&답변

허훈님의 프로필 이미지
허훈

작성한 질문수

iOS9 & Swift2 12개 앱을 만들면서 배우는 아이폰 앱 개발

25. 도서관리 앱 실습 1

override func viewDidLoad에서 클래스를 선언할 때 let을 써야만 하는 까닭?

작성

·

285

0

도서관리 앱을 만드는 강좌를 보다가 질문드립니다. 클래스로부터 객체를 생성할 때, var가 아닌 let을 써야만 하는 까닭이 잘 이해되지 않습니다. let으로 객체를 상수로 선언한 뒤에 객체 속성을 지정하는 과정이 있다면, immutable object에 값을 할당하는 것처럼 보이지만 여전히 구문상 오류 메시지는 뜨지 않는다는 게 신기합니다. 객체를 상수로 선언하는 것은 단지 객체 인스턴스가 사용할 메모리 공간을 확보하고, 객체의 인스턴스에 할당된 레퍼런스 ID를 상수로 지정하는 것이다…로 이해하면 되나요?

답변 2

0

뭐하는거니?님의 프로필 이미지
뭐하는거니?
지식공유자

변수로 선언해도 상관 없습니다. 하지만 코딩이 다 하시고 Xcode에서 변수를 써서 할당했는데 값이 한번도 변하지 않는게 있다면, let로 바꾸라고 recommend 해줄꺼예요. 상수란 ibook에 “Use let to make a constant and var to make a variable. The value of a constant doesn’t need to be known at compile time, but you must assign it a value exactly once. This means you can use constants to name a value that you determine once but use in many places.” 요렇게 나와 있습니다. 이런 정의는 아시자나요. 상수는 한번 값이 정의 되면 바뀌지 않는 값이다. 근데 개발자 마다 상수를 많이 쓰는 사람도 있고 잘 안쓰는 사람도 있고 그래요. 제가 예전에 외국 사이트에서 본 얘기중 "상수쓰지 말고 그냥 변수에 할당하고 값을 한번도 다시 할당 하지 않는게 더 나을수도 있다" 란 얘기도 본적이 있어요. 이런건 개발자 스타일 입니다. 근데 Xcode는 이런걸 안 좋아 하더군요. 생각해보면 변하지 않는 값인데 변수로 할당해 버리면 혹시 모를 잘못된 코딩으로 값이 변경되어 버리면 문제가 되겠죠. Swift가 처음 나왔을때 애플에서 강조 했던 3가지가 power, modern, safe였어요. 변수를 상수를 바꾸는 거는 이 safe 부분에 기반한거 같습니다. 안전한 코드를 만들기 위해서 말이죠. 최대한 엄격하게 만드는 거죠.  

0

허훈님의 프로필 이미지
허훈
질문자

제목이 잘못 되었네요. 클래스의 인스턴스인 객체를 생성할 때 변수가 아닌 상수로 정의하는 까닭이 궁금합니다.
허훈님의 프로필 이미지
허훈

작성한 질문수

질문하기