[TIL / 25.03.18] 최적화(OptimizationTips) 1
·
iOS/Swift
Private, public 의 쓰임새에 대해서 좀 더 고민하다가 같이 고민하던 분들과 같이 튜터님께 갔는데 최적화 관련 정보가 있는 링크를 받아 해석해보기로 했읍니다,,,,,  1. Whole Module Optimizations (WMO)기본적으로 Swift는 각 파일을 개별적으로 컴파일한다고 합니다. 이를 통해 Xcode는 여러 파일을 매우 빠르게 병렬로 컴파일할 수 있는데, 단 각 파일을 개별적으로 컴파일하게 되면 특정 컴파일러 최적화를 방지할 수 있다고 합니다. (일부 최적화를 하는 데에 방해가 된다는 느낌인듯?) 이때 파일 단위로 컴파일하지 않고 모든 파일을 하나의 단위로 컴파일하는게 WMO라고 합니다.단, 컴파일 시간이 기본모드보다 느린 점이 있지만 그만큼 최적화에 장점이 있는데 이 최적화도..
[Algorithm / 25.03.18] 추억 점수
·
Algorithm
1. 문제 설명사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다. 그리워하는 사람..
[TIL / 25.03.17] Array.compactMap (feat. 문법 심화 과제)
·
iOS/Swift
문제에서 요구사항이 "함수 c 에 Numbers 프로토콜 요소를 가진 배열만 사용할 수 있는 함수 d 를 작성해주세요."였다. 엥? 배열 내 요소에 프로토콜 준수를 시킨다는건 대충 알겠지만 뭐 어떤 내용에 대한 준수를 하도록 할 것이며... 등등 의문이 좀 있었는데 어쨋든 구현을 해보기로 한다. import Foundationprotocol Numbers { var intValue: Int? { get }}class ThirdQuestion { func removeEvenNum(_ array: [Int]) -> [Int] { var result: [Int] = [] for i in 1...array.count { // 홀수 요소..
[TIL / 25.03.13] 의존성 주입 (Dependency Injection)
·
iOS/Swift
1. 의존성 주입, 왜 할까?개발을 하다 보면 코드 간의 의존성 문제로 인해 유지보수가 어려워지는 경우가 많습니다.객체간에 강하게 참조를 할 경우나,, 어느 객체에서 한 객체를 직접 내부에서 인스턴스화해 쓰는 경우 쓰이던 객체가 만약 문제가 생긴다면?그 문제는 그 객체만 해결해줄 게 아니라 그걸 직접 만들어 쓰고 있던 객체 측에서도 수정해줘야 합니다..!!이렇게 한 객체가 타 객체에게 의존을 하게 되어 생기는 문제를 해결할 수 있도록 의존성 주입을 해줍니다 2. 의존성 주입은 어떻게 하나? 그리고 장점은?class Guitar { func play() { print("대..충.. 기타치는 소리...") }}class Artist { var guitar = Guitar() ..
[TIL / 25.03.12] Alamofire Interceptor에 관한 문제 해결
·
iOS/Swift
1. 겪었던 문제메서드마다 interceptor 인스턴스를 넣어주면서 토큰 관련 인증을 알아서 하도록 설정을 해두었는데, 이상하게 토큰 관련 에러가 지속됐다. (토큰이 만료되었습니다.........)Task { do { let response = try await AF.request(AuthRouter.refreshToken(refreshRequest)) .serializingDecodable(AuthTokenResponse.self) .value // 새로운 토큰 저장 KeychainHelper.shared...
[TIL / 25.03.11] 에러 핸들링(Error Handling)
·
iOS/Swift
swift.org의 에러 핸들링 파트를 보고 클로드랑 같이 병행해서 개념을 익히고 정리해보았읍니다 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/errorhandling#Converting-Errors-to-Optional-Values1. Error Handling에러 핸들링(Error Handling)은 프로그램 실행 중 발생할 수 있는 오류를 감지하고, 이를 적절히 처리하여 정상적인 흐름을 유지하는 과정 예를 들어, 네트워크 메서드를 처리해줌에 있어 발생할 수 있는 오류로 토큰 만료로 인한 인증 오류,, 요청 보낼 당시의 파라미터의 부재,,, 등등 많음. 요렇게 일어날 수 있는 에러들에 있어 어떻게 처리해주..
[TIL / 25.03.11] 숫자 야구 게임을 만들어보았소.
·
Algorithm
1. 구현해야 할 것 이번 주 과제로 숫자 야구 게임을 만들어보도록 한다.설명은 위 이미지를 보면 이해가 될텐데 ,, 어렴풋이 기억이 난다. 다만 이런 자료구조를 이용한 문제 풀이는 거의 생소하다보니 미친듯이 삽질했다,,,,,,흑 2. 구현 내용우선 중간중간 계속 코드를 갈아엎었는데 안되는 이유를 알지만 명확히 쓰기는 좀 힘들어서 최대한 문제 해결 쪽에 초점을 맞추다보니 과정에 대한 이미지가 없다,, 2.1 전체 코드import Foundationstruct BaseBallGame { func start() { var gameHistory = [GameHistory]() var gameCount = 0 while true { ..
[TIL / 25.03.07] IBOutlet이 모두 nil이 되는 현상, 캠프 1주차 회고
·
내일배움캠프
1. 문제 해결1.1 상황코드베이스 UI인 내 페이지에서 스토리보드 기반 페이지인 팀원분의 페이지로 네비게이션 이동해야 했는데, 모든 IBOutlet이 런타임에 nil로 잡히던 현상이 있었다. 해당 문제만 보면 기존 가끔 생겼던 스토리보드 단골 오류인 연결에 무언가 버그가 생겼거니 하며 모든 연결을 끊고 다시 연결하는 등 이런저런 시도를 해보며 print 함수로 단계별로 nil인지 찍어봤다. 달라지는 건 없었고 모든 컴포넌트에 대해 nil이라는 답이 돌아왔다. 1.2 해결 방안스토리보드로 정의된 UI에 대한 뷰, 페이지에 연결하려면 그냥 코드 베이스에서 쓰던 방식대로 하면 안된다. let vc = ViewController(); self.navigationController?.pushViewControl..
[TIL / 25.03.06] 컨플릭트 지옥에 갇히게 되,,, (feat. project.pbxproj)
·
Git, Github
어제까지만 해도 서로 맞지 않는 Main.storyboard에 대한 Conflict를 해결하느라 땀 좀 뺐는데,,저거 말고도 사실 꾸준히 괴롭혀오는 파일이 있음,, project.pbxproj라는 파일인데 project.pbxproj란?- Xcode를 켜고 프로젝트를 열면 좌측 네비게이터를 보면 파일들이 유저가 만든대로 정리가 되어있다. 이 파일들을 누르면 해당 파일의 내용을 에디터로 수정할 수 있게 해주는데, 이는 해당 파일(project.pbxproj)이 프로젝트의 모든 구조적 정보를 저장해놓는 데이터베이스 역할을 하기 때문이다. 파일 참조 관리, 빌드 설정, 단계, 그룹 구조, 의존성 관리 등 전반적인 중요한 설정에 관한 정보가 담겨있다. 이 파일이 Xcode 프로젝트 파일(.xcodeproj) 패..
[TIL / 25.03.05] 이미지 슬라이더 + 커스텀 인디케이터
·
iOS/Swift
1. 구현한 것 어느 팀원을 선택하면 해당 팀원의 상세 페이지를 보여주는 화면을 제작하도록 했다.해당 뷰에서 필요한 기술이 뭐가 있을지 만들기 전 생각해봤는데 1. 이미지 슬라이더 2. 그에 맞는 인디케이터 3. 칩 모양은 컬렉션뷰로 4. 화면 크기 생각해서 일부만 스크롤뷰로 구현이정도를 해야했고, 이 포스트에선 가장 애먹었던 부분인 커스텀 슬라이더와 인디케이터에 대해 다루겠다. 이미지 슬라이더 자체는 컨셉이 컬렉션뷰고 화면 꽉채우고 페이지 가능하게 해야 하는 부분이라 썩 어렵지만은 않아서 일단 패스하고, 저 상단에 인디케이터는 보통 라이브러리나 기본 제공되는 형태가 점(dot)으로 되어있기에 커스텀할 필요가 있었다. 2. 구현 내용우선 이런 커스텀 뷰 자체를 직접 만드는 능력이 아직 부족해 클로드에게 ..