[Swift] 타입 추론 시 발생하는 Circular Reference 에러
·
Swift/개념 & 응용
문제 상황명시적 타입 표기를 타입 추론으로 변경하는 과정에서 Circular reference라는 컴파일 에러를 만났습니다.단순히 타입을 명시하던 것을 타입 추론으로 바꿨을 뿐인데 컴파일 에러가 발생하는 게 이해가 되지 않았습니다.분명 같은 동작을 하는 코드인데 말이죠. 예제 코드먼저 기본이 되는 Name 클래스를 살펴봅시다.class Name { let string: String var greeting: (() -> Name)? init(string: String, greeting: (() -> Name)?) { self.string = string self.greeting = greeting }}Name 클래스는 초기화 시 클로저를 전달받을 수 있..
[Swift] 상속에서 didSet의 동작 방식
·
Swift/개념 & 응용
상속에서 didSet의 호출 순서는 어떻게 될까?Swift를 사용하다 보면 프로퍼티 옵저버와 상속이 만났을 때 어떻게 동작하는지 궁금한 순간이 있습니다. 특히 부모와 자식 클래스 모두 같은 프로퍼티에 didSet을 정의했다면 어떤 일이 벌어질까요?class Parent { var name: String = "jeong" { didSet { print("Parent name changed to \(name)") } }}class Child: Parent { override var name: String { didSet { print("Child name changed to \(name)") } }..
[회고] 네이버 웹툰에선 지난 모든 경험이 도움이 되는 중
·
경험 회고/꾸준 회고
네이버 웹툰 3개월, 그리고 면수습네이버 웹툰에 입사한 지 어느새 세 달이 되었고, 최근 면수습을 하게 되었습니다. 세 달간의 수습 기간과 최근까지 느낀 점들을 정리해보려고 합니다.네이버 웹툰에 입사한 후, 지난 경험들이 생각보다 자주 도움이 된다고 느꼈습니다. 초봉 2400만 원으로 시작했던 안드로이드 개발 경험부터 네이버 부스트캠프에서의 경험, 그리고 스타트업에서의 경험까지 모든 것들이 현재 긍정적인 성과를 내는 데 도움이 되고 있습니다.이런 경험들을 공유하면 다른 분들에게도 도움이 될 것 같아 포스팅으로 남겨보려고 합니다.(내용이 조금 추상적일 수 있는데요. 어쩔 수 없이 디테일한 내용을 기재할 수 없는 점은 이해 부탁드립니다 😅) 작은 회사에서 배운 도전 정신이전 회사에서는 1명이 여러 프로젝트..
[Swift] internal(set) 접근제어자
·
Swift/개념 & 응용
public internal(set)private(set)은 내부 범위에선 읽기/쓰기가 가능하고 외부 범위에선 읽기만 가능한 접근제어자입니다.외부로 최소한의 정보만 노출하는데 유용한 접근제어자라서 좋아하는 접근제어자 중 하나입니다. 이 개념을 모듈 단위에서 사용하고 싶을 땐 internal(set)을 사용하면 됩니다.public/open internal(set)은 내부 모듈에선 읽기/쓰기가 가능하고 외부 모듈에선 읽기만 가능한 접근제어자입니다. internal(set) 앞에는 public 또는 open을 붙여야 합니다. (안 붙여도 에러는 안 나요.)public 또는 open을 안 붙이면 internal(set)을 안 쓴 것과 공개 범위가 동일하기 때문입니다.만약 public 또는 open을 안 붙이면 ..
[회고] 면접으로 성장해서 네이버 웹툰 iOS 최종 합격, 입사까지
·
경험 회고/꾸준 회고
서론빙하기에 운이 좋게도 네이버 웹툰이라는 좋은 기업에 이직하게 되었습니다. 네이버 웹툰에는 총 세 번 지원했고, 세 번 모두 최종 면접까지 진행했습니다.면접 과정에서 현재 회사에서는 경험할 수 없었던 새로운 관점들을 얻을 수 있었습니다.대규모 기업에서 마주하는 고민들, 현재 직장에서 겪고 있던 어려움들을 해결할 수 있는 아이디어들을 배울 수 있었던 소중한 시간이었습니다. 입사를 일주일 앞둔 지금, 네이버 웹툰이나 iOS 개발자로의 취업 및 이직을 준비하는 분들에게 조금이라도 도움이 되었으면 하는 마음으로 제 경험을 정리해 보았습니다.궁금한 점이 있으시면 언제든 댓글로 남겨주세요. 또한 이전에도 비슷한 경험담을 작성한 적이 있으니, 관심이 있으시다면 함께 참고해 보시기 바랍니다.- https://jeon..
[iOS] UIProgressView에 숨겨진 애플의 디테일 - progress의 최소 width
·
iOS/개념 & 개발
UIProgressViewUIProgressView는 0~1 사이의 수치로 progress를 표현할때 사용하는 UIView입니다.개발자는 정확한 progress를 쉽게 표현하기 위해 UIProgressView를 사용할텐데요.UIProgressView에는 숨겨진 함정이 있습니다.바로 progress를 표현하는 최소 width가 정해져있다는 것입니다. progress 수치에 따른 width 비교0.5예를 들어, width가 100인 UIProgressView의 progress를 0.5로 설정하면 progress width는 50이 됩니다.progressView.progressTintColor = .cyanprogressView.frame = CGRect(x: 180, y: 300, width: 100, he..
[iOS/꾸준 회고] Swift Testing 및 테스트 작성에서 느낀 점
·
iOS/개념 & 개발
서론최근 테스트와 관련된 포스팅을 작성했습니다.테스트 코드 필요성과 테스트 쉬운 구조테스트 코드 작성과 구조 개선역할 분리와 객체 지향과 코드 개선그리고 작업을 진행하면서 꾸준히 테스트 코드를 작성하고 있어요.Swift Testing의 좋았던 점과 테스트 코드를 작성하면서 느낀 점을 공유해보고 싶어서 또 포스팅을 쓰러 왔어요 ㅎㅎ테스트 코드를 왜 작성하기로 결심했는지 등은 이전 포스팅을 참고해 주세요. Swift Testing제가 담당하는 앱은 글로벌 서비스라 최근에 최소지원버전을 iOS 15로 올렸을 만큼 최신화된 프로젝트는 아니에요.Swift Testing 처음 발표를 들었을 때는 "이번에도 나는 못 쓰지 않을까?" 생각이 있었어요.다행히 Swift Testing은 그런 걱정과 달리 편하게 사용할 ..
[iOS/꾸준 회고] 역할 분리와 객체 지향과 코드 개선
·
iOS/개념 & 개발
서론최근 제 코드를 어떻게 하면 더 나은 방향으로 개선할 수 있을지 많은 고민을 하고 있습니다.매 순간 마주하는 코드의 맥락과 작업 환경, 그리고 제가 처한 상황이 계속 변화하다 보니 명확한 해답을 찾기가 쉽지 않더라고요. 이런 고민들을 정리하면서 함께 나누고 싶어 이 글을 쓰게 되었습니다.특히 요즘은 객체지향적인 설계와 역할 분리에 대해 깊이 생각해보고 있는데요. 실제 업무에서 작성한 코드로 예시를 들면 좋겠지만, 회사 코드라는 특성상 공개하기 어려운 점이 아쉽네요.그래서 이번 글은 다소 추상적인 경험 공유가 될 것 같습니다만, 함께 이야기를 나누면서 서로의 생각을 공유할 수 있었으면 좋겠어요. 고민하게 된 계기역할 분리와 객체지향에 대해 고민하게 된 계기는 반복되는 보일러플레이트 코드였습니다.개발을 ..
[iOS/꾸준 회고] 테스트 코드 작성과 구조 개선
·
iOS/개념 & 개발
서론이전 포스팅에서 테스트 코드의 필요성을 느꼈다는 글을 적었습니다. [iOS/꾸준 회고]테스트 코드 필요성과 테스트 쉬운 구조서론최근 테스트 코드와 관련된 많은 깨달음을 얻었습니다.테스트 코드의 필요성과 테스트하기 좋은 구조란 무엇인지, 그리고 왜 MVC 패턴에서 테스트가 어려운지를 체감할 수 있었습니다. 테jeong9216.tistory.com이에 대한 최근 근황을 작성해보려고 합니다. 흐려지는 동기테스트 코드가 아니어도 이미 많은 업무를 처리하다 보니 테스트 코드를 작성하는 동기가 점점 흐려졌습니다. (외면하게 되었다는 게 맞겠네요... 🥲) 이 흐려지는 동기를 해결하기 위해 저는 테스트 코드 작성을 팀의 레벨로 올려서 진행했습니다.저희 회사는 1명이 프로젝트를 온전히 담당하는 구조라서 같은 프로..
[iOS/꾸준 회고] 테스트 코드 필요성과 테스트 쉬운 구조
·
iOS/개념 & 개발
서론최근 테스트 코드와 관련된 많은 깨달음을 얻었습니다.테스트 코드의 필요성과 테스트하기 좋은 구조란 무엇인지, 그리고 왜 MVC 패턴에서 테스트가 어려운지를 체감할 수 있었습니다. 테스트 코드 없이 앱 리뉴얼 하기최근 사내 앱의 UI 리뉴얼을 진행했습니다.기존 기능은 그대로 유지하면서 UI만 새롭게 구현하는 작업이었습니다. 이 과정에서 기존 동작 검증에 어려움을 느꼈습니다.기존 동작이 제대로 유지되는지 확인하기 위해서는 기존 앱과 리뉴얼된 앱을 일일이 실행하며 비교해야 했습니다.테스트 코드가 있었다면 딸깍 한 번으로 검증이 가능했을 텐데... 많이 아쉬웠습니다. 작업 시간뿐만 아니라 심리적인 부담도 상당했습니다."테스트 코드 없는 리팩토링은 도박과 같다"는 말이 있듯이 코드를 수정할 때마다 "이 수정이..
유정주
정주는 개발 중 :]