본문 바로가기

전체 글65

delegate가 weak, optional타입을 가지는 이유 정처 없이 delegate에 대해 알고싶어서 'cmd + 클릭'로 정의되어 있는 코드들을 탐색하다.. 문득! 어.. 근데 왜 delegate가 'weak'에 타입은 옵셔널(?)이지..? 라는 생각이 들어 잘성하는 글이다ㅎㅎ vc.delegate = self vc의 delegate를 현재의 ViewController에서 구현하고 싶어 선언해주려 할때, 위의 코드처럼 무의식적으로 작성하는 과거의 나를 떠올리며, 왜 그동안 수긍했나 라는 생각이 든다ㅎㅎ 우선 "왜 옵셔널인가?"에 대한 답은 delegate가 채택이 안된상태로 존재할 수 있기 때문이다. delegate가 있지만, 선언을 해 구현할 필요가 없을 경우가 있고, delegate가 선언되어 있었지만, 구현을 맡고있던 객체를 빼내어 nil값을 갖게 되는.. 2022. 8. 30.
Swift에서의 메모리 관리 먼저 메모리 관리에 앞서 메모리가 뭘까? 노트북을 사게 될때, 램은 몇기가가 좋아요? 8g? 16g? 와 같은 말을 하게 된다. 이때 이 램이 바로 우리가 말하는 메모리이다! 램(메모리)이란, '그 용량이 크면 클수록 저장할 수 있는 공간이 커져 동시에 여러 일을 더 잘 할 수 있게 만들어 준다 '라고 이해하면 아주 간단한 이해다. + 프로그램이 실행되는 동안, 필요한 정보를 저장해 컴퓨터의 빠른 연산에 도움을 준다고 생각하면 된다. 실제로 프로그램이 실행되려면, 메모리에 프로그램이 올라간다. 라는 표현이 있는데, 이는 실행시킨 프로그램의 명령어들과 실행되는데 필요한 데이터들이 메모리에 위치한다 라고 이해하면 된다! 컴퓨터를 사용할때, 언제나 우린 메모리를 사용하고 있다. 그러나 그 메모리는 한정된 재화.. 2022. 8. 28.
변수앞에 static이랑 class가 붙었는데요?(static 변수, class 변수) class Person { static let name: String = "Park" var age: Int class func job() { print("My job is ...") } } (Person 클래스의 변수들이 모두 초기화값을 가지고 있지 않으므로, init()이 반드시 필요한 코드지만, 설명을 위한 간략한 코드로 넘어가자!) 위와같은 코드는 아~~~주 흔하게 class를 만들거나 struct를 만들때와는 아주 조금 모양이 다르게 생겼다. 보통이라면, (여기서 말하는 보통이란, static, class가 변수 앞에 안붙은 아주 plain 한 상태의 class혹은 struct를 말한다.) Person의 age변수처럼 var age: Int 로 표현되지만, 위의 경우에는 static 과 clas.. 2022. 8. 27.
협업중 시뮬레이터가 뜨지 않는다면??(제 맥에서는 뜨는데요?) 협업을 하며 프로젝트를 공유해 개발을 진행하다보면, iPhone 13 Pro라고 나오고 클릭하면 우리가 만든 프로젝트를 볼 수 있는 무수히 많은 시뮬레이터가 나와야하지만, 가~~끔씩 아주 가~~~~~끔씩 No device라는 말과 함께 아무 시뮬레이터도 볼 수 없는 상황이 된다. 이는 나의 경험에 기반해 90% 정도가 Xcode의 버전문제 때문이었는데. 협업을 하는 서로간의 Xcode가 누구는 가장 최신, 누구는 오래된 버전을 사용하고 있어 협업하고 있는 프로젝트의 버전이 맞지 않게 되는 문제이다. 위의 해결 방법으로는 1. Xcode가 낮은 버전인 상태의 사람이 Xcode의 버전을 업데이트하거나 2. 그럴 여유가 되지 않는다면, 시뮬레이터가 켜지지 않는 맥의 프로젝트 버전을 낮춰주는 것이 있다. 상단의.. 2022. 8. 16.