Swift에서 private static의 조합 이해하기Swift 프로그래밍 언어에서 private와 static 키워드는 각각 접근 제어와 클래스 또는 구조체의 타입 속성을 정의하는 데 사용된다. 이 두 키워드를 함께 사용하는 것은 특정 상황에서 유용할 수 있으며, 이를 통해 코드의 캡슐화와 구조를 개선할 수 있다. 이번 글에서는 private static의 의미, 사용 사례, 그리고 예제를 통해 자세히 살펴보자. private와 static의 정의1. private private는 접근 제어 키워드로, 해당 속성이나 메서드가 정의된 클래스 또는 구조체 내부에서만 접근할 수 있도록 제한한다. 이는 외부에서의 접근을 차단하여 데이터의 무결성을 보호하고, 클래스의 내부 구현을 숨기는 데 도움을 준다...
분류 전체보기
Swift에서의 override 키워드 이해하기Swift 프로그래밍 언어에서 override 키워드는 객체 지향 프로그래밍의 중요한 개념인 상속과 관련이 깊다. 이 글에서는 override의 정의, 사용 방법, 특징 및 주의사항에 대해 자세히 살펴볼 것이다. 1. override 란 무엇인가?override는 서브클래스가 부모 클래스에서 정의된 메서드나 속성을 재정의할 때 사용하는 키워드이다. 이를 통해 서브클래스는 부모 클래스의 기본 동작을 수정하거나 새로운 기능을 추가할 수 있으며, override를 사용함으로써 코드의 재사용성과 유연성을 높일 수 있다. 2. 상속과 override상속은 객체 지향 프로그래밍의 핵심 개념 중 하나로, 한 클래스가 다른 클래스의 속성과 메서드를 물려받는 기능을 ..
이번 프로젝트는 github에서 사용자 정보를 가져와서 사용하고, 보여주어야 하기 때문에 GitHub를 연동하여 로그인할 수 있도록 구현하는 게 필수요소인데, 로그인은 됐는데 404 화면이 뜬다거나, 이상한 화면이 확인된다거나... 하는 문제에 대해 자료를 찾는 게 어려워서 한참 헤맸던 것 같다. GitHub 사용자 정보를 가져오기 위해 먼저 Firebase Authentication 기능이 필요한데, Firebase에 사용할 프로젝트를 생성하고 Authentication에서 로그인 제공 업체를 선택해주어야 한다. 위 사진과 같이 경로를 이동한 후 새 공급업체 추가를 클릭하면 Firebase에서 지원하는 로그인 제공업체를 선택할 수 있는 창이 팝업 된다. 여기서 GitHub를 선택해 주면 된다. ..
SwiftUI로 앱을 구현하게 되면서 앱의 처음이라는 느낌 때문인지 제일 처음 시도한 게 Luanch Screen을 구현하는 거였다. UIKit과 달리 Luanch Screen 파일이 생성되어 있지 않아서 구글링부터 시작하게 되었는데, 문득 Luanch Screen과 Splash Image의 차이가 뭔지 궁금해졌다. 먼저 Luanch Screen과 Splash Image의 차이가 뭔지에 대해 알아보자. Launch Screen (런치 스크린)정의: 앱이 실행될 때 가장 먼저 보여지는 화면으로, 사용자가 앱을 로드하는 동안 보여지는 화면목적: 1) 앱의 초기 로딩 시간을 숨기고 사용자에게 앱이 로드되고 있다는 것을 시각적으로 전달 2) 사용자에게 앱의 브랜드 아이덴티티를 강화하는 역할..
2차 업데이트1차 업데이트 후 또 다른 피드백을 받게 되었는데, 바로 집중모드 중단 시 메인에서 보이는 시간과 상세페이지에서 확인할 수 있는 총 집중시간의 시간이 일치하지 않는다는 피드백이었다. 진짜 상상도 못한 문제라 곧바로 수정에 들어갔다. 일단 수정 전 코드를 보면,private func pauseTimerData() { // 생략 let currentDate = Date() let elapsedTime = currentDate.timeIntervalSince(startTime) + totalTimeElapsed totalTimeElapsed = elapsedTime let day = getCurrentFormattedDate() formatter.dateFor..
출시된 앱 버전을 업그레이드 해서 Archive를 진행하려는데 자꾸 아래와 같은 에러가 발생하면서 실행되지 않았다. 분명 버전 바꿨는데 왜 안 되는데! command validateembeddedbinary failed with a nonzero exit code 여기에서이케 바꿨는데? 왜? 안돼?는 간단했다.(안 되서 씨름한 시간만 2시간...) 위젯 버전은 따로 변경해줘야 함. 위 경로에서 이것도 동일하게 변경해줘야 했다.
이번 모의면접 질문에서 순환 참조를 어떻게 해결하는지에 대한 꼬리질문이 나왔는데, 분명 공부했음에도 답변을 하지 못했다. 그래서 다시 공부해야 할 필요성을 느끼고 순환 참조 해결에 대해 짚어봤다. 순환 참조(Circular Reference)순환 참조(Circular Reference)란 두 개 이상의 객체가 서로를 참조하고 있어, 이 객체들이 메모리에서 해제되지 않고 계속 남아 있는 상황을 말한다. Swift에서는 ARC(Automatic Reference Counting)를 사용하여 메모리를 관리하며, 이 순환 참조를 적절히 해결하지 않으면 메모리 누수가 발생할 수 있는데, UIKit과 같은 프레임워크를 사용할 때 순환 참조는 주로 클로저와 델리게이트 패턴을 사용할 때 발생한다. ..
출시 직후부터 자잘한 문제부터 발생하면 안 될 문제까지 정말 많은 피드백을 받게 되었는데, 한 두 개가 아니라 팀원들과 회의를 통해 모든 문제를 한 번에 다잡기보다는 먼저 가장 급한 문제부터 잡아나가자는 결론이 났다. 피드백 리스트 더보기회원가입1. 텍스트 필드를 순서대로 입력하지 않고 반대로 입력할 경우 예러처리가 제대로 진행되지 않고 있음 2. 개인정보 처리방침을 동의 했으나 텍스트 필드가 모두 입력되지 않은 상태에서도 회원가입 버튼이 활성화되고 있음 → 예외처리 재구현 필요 & 개인정보 처리방침 동의 후 활성화 예외처리 필요 메인(타이머)1. 앱 실행 중 중단 버튼이 안 눌릴 때가 있음 2. 탭바 이동 후 다시 메인페이지로 왔을 때 마리모 애니메이션 실행 안 됨 → 전면 리팩토링 필요 캘린더1...