TIL
-
210612 - TILTIL/2021 2021. 6. 13. 00:08
Clean Code 코드 형식은 의사소통의 일환이니 형식을 깔끔하게 따라야 한다. 개념은 빈행으로 구분. 변수는 사용하는 위치에 최대한 가까이 선언한다. 인스턴스 변수는 클래스 맨 처음에 선언한다. 이 부분은 대부분 지금 지키고 있는 부분이라서 앞으로도 신경 쓰며 코드를 작성하면 될 거 같다! guard let self = self self = self 바인딩이 낯설어서 이게 뭐지...? 고민을 했었는데 잘 생각해보니 weak self로 인해서 self가 옵셔널이 되어서 사용하는 코드였다. https://github.com/apple/swift-evolution/blob/master/proposals/0079-upgrade-self-from-weak-to-strong.md apple/swift-evolu..
-
210611 - TILTIL/2021 2021. 6. 11. 18:46
독서 Clean Code 주석은 오래될수록 코드에서 멀어진다. 주석을 가능한 줄이도록 꾸준히 노력해야 한다. 많은 경우 주석으로 달려는 설명을 함수로 만들어 표현해도 충분하다. 코드를 주석으로 남겨두지 말자! 쓸모없고 git이 어차피 이전 정보를 다 기록해준다. 코드 일부에 주석을 달면서 시스템 전반적인 정보를 기술하지 말자. 기존에도 주석을 잘 다는 편이 아니다. 주석이 필요 없을 만큼 코드가 목적을 잘 나타내서가 아니라 해야 하나...?라는 생각 때문인데 최대한 필요한 주석만 달도록 노력해봐야겠다. collectionView collectionView를 다루는 데 있어서 customCell과 cell의 사이즈 등등을 다루는 데 있어서 이해가 부족한 거 같아서 다시 공부를 하게 됐다. Layout을 결..
-
210610 - TILTIL/2021 2021. 6. 10. 23:36
독서 Clean Code - 함수 Switch - 추상 클래스, 프로토콜을 이용하여 구현 일관성 있게 이름을 짓자. 인수가 필요한 경우는 인수에 질문을 던지는 경우, 인수를 변환해 결과로 반환할 때 플래그를 인자로 받는 함수는 한 번에 한 가지를 하는 함수가 아니므로 피하자. do catch문은 별도의 함수로 뽑아내는 게 좋다. 오류처리도 한 가지만 하는 게 좋다. 즉 함수는 do로 시작해서 catch로 끝나야 한다. 한 번에무리다. 작성해놓고 리팩토링을 하는게 좋다. argument가 2~3개 필요하다면 일부를 독자적인 클래스 변수로 선언할 가능성이 있는지 확인해본다. argument는 적을수록 좋다. 최선은 0개 하지만 현실적으론 어렵다ㅠㅠ 길고 서술적인 이름이 길고 서술적인 주석보다, 짧고 어려운 ..
-
210606-TILTIL/2021 2021. 6. 7. 00:03
Swift 공부 Optional에 대해서 복습을 했다. 워낙 자주 사용하는 문법이라 안 써서 까먹은 부분은 거의 없었지만 IUO는 @IBOutlet에서나 Test에서 사용하는 게 아니라면 직접 사용할 일이 없어서 디테일을 까먹었지만 다시 공부를 하게 됐다. 기본적으로 Optional으로 지정되며 type annotation을 하게 되면 자동으로 forced unwrapping이 된다. PhotoKit 사진 앱에 저장되어 있는 이미지를 여러 개 가져와야 하는 상황이 발생해서 공부를 하게 됐다. 예전에 공부를 한 번 해봤다가 어려워서 포기를 했는데 지금은 찬찬히 하나씩 레퍼런스를 보며 공부를 해보니 이해가 되고 있다.(물론 옳게 이해했는지는 확실하지 않지만) 오늘 공부한 건 기본을 이루는 개념들에 대해서 공..
-
210605 - TILTIL/2021 2021. 6. 3. 16:47
독서 '객체지향의 사실과 오해' 책을 2번째 읽는 것을 끝내고 다시 'CleanCode'로 돌아왔다. 지난번 4장까지 읽다가 그만두었는데 오늘부터 다시 1장부터 시작이다. (수학의 정석 집합 느낌이 나는데..?) InputView, InputAccesoryView 예전에 구현한 적이 있는데 복습 겸해서 처음부터 만들어봤다. 키보드의 크기를 맞추는 방법만 다시 공부하면 될듯하다. 복습하며 잊어버렸다가 알게 된 부분은 inputView와 inputAccessoryView를 헷갈리지 않게 됐고 TextField의 커서가 깜빡이는 것을 없앨 때는 TintColor를 .clear로 변경하면 없앨 수 있다. 수정이 안되게 하려면 Delegate에 textField(_:shouldChangeCharactersIn:r..
-
210522 - TILTIL/2021 2021. 5. 23. 03:44
LLVM Profile Error: Failed to write file “default.profraw”: Permission denied 전에 못 보던 경고 메시지가 나타나서 이건 뭐지?? 했는데 이 메시지만 보고서는 뭔 말인지 알 수가 없어서 검색을 해봤다. https://llvm.org The LLVM Compiler Infrastructure Project LLVM Overview The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines. The name "..
-
210521 - TILTIL/2021 2021. 5. 22. 03:11
지도에 이동한 경로 표시하기 이동경로를 표시하는 방법에 대해서 공부를 했다. 경로를 그리기 위해서는 이동한 location을 모두 저장해 둬야 한다. Line을 그리는 것은 MapView를 이용해야 하고 delegate에서 mapView(_:rendererFor:) 메서드에서 MKPolylineRenderer를 리턴해줘야 한다. 위와 같이 실시간으로 그리는 방법은 locationManager(_:didUpdateLocation:)에서 mapView.addOverlay(_:)를 구현해주면 위치정보가 업데이트되면서 경로를 그리게 된다. 마지막으로 완성된 화면처럼 결과를 나타내고 싶다면 저장해둔 location을 다음 VC에 전달해주고받은 location을 이용하여 mapView에서 구현해주면 된다. 물론 R..
-
210520 - TILTIL/2021 2021. 5. 21. 00:44
TextView placeholder TextField는 placeholde를 기본적으로 제공해주는데 TextView는 직접 구현을 해야 한다. 물론 저번에 구현한 거 같은데 다시 하려고 보니 까먹었으니 다시 공부했다. 몇 가지 방법이 있겠지만 간단하게 구현하는 방법은 Delegate를 이용하는 방법이다. 이렇게 textViewDidBeginEditing(_:) 과 textViewDidEndEditing(_:) 에서 상황에 맞게 구현하는 방법이다. TextView(_:shouldChangeTextIn:replacementText:) 에서 현재 텍스트 가져오기 이건 TextField에서 공부했던 내용인데 TextView에서도 다를 게 없으니 구현해봤다. range가 NSRange라 NSString으로 변환..