전체 글
-
가장 많이 받는 선물Swift Algorithm 2024. 4. 28. 16:57
https://school.programmers.co.kr/learn/courses/30/lessons/258712선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다.두 사람이 선물을 주고받은 기록이 있다면, 이번 달까지 두 사람 사이에 더 많은 선물을 준 사람이 다음 달에 선물을 하나 받습니다.예를 들어 A가 B에게 선물을 5번 줬고, B가 A에게 선물을 3번 줬다면 다음 달엔 A가 B에게 선물을 하나 받습니다.두 사람이 선물을 주고받은 기록이 하나도 없거나 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 선물 지수가 더 작은 사람에게 선물을 하나..
-
Xcode 14.3 업데이트 이슈기타 2023. 3. 31. 17:47
개요 23.04.01시점의 iOS 최신 버전인 16.4에 대응하기 위한 Xcode 14.3의 migration에 관한 doc입니다. 라이브러리 이슈 기존 프로젝트를 빌드하면 아래와 같은 컴파일 에러가 발생한다. CocoaPod Deployment target을 최선 버전에 맞게 설정해주면 된다. post_install do |installer| installer.generated_projects.each do |project| project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' end end end end 실제..
-
SwiftUI) App 구조SwiftUI 2022. 10. 17. 16:26
App 구조 import SwiftUI @main struct MyApp: App { var body: some Scene { WindowGroup { ContentView() } } } 기존 Swift에서 앱 진입을 담당하는 부분은 Appdelegate 혹은 SceneDelegate. @main 어노테이션을 통해 앱 entry point 지정 SwiftUI 또한 @main annotation을 사용해서 앱의 시작 지점을 알려줌. App MyApp은 App 프로토콜을 채택하고 있다. 앱의 구조와 동작을 나타내는 타입이다. Swift에서의 AppDelegate 역할 App 프로토콜은 body 프로퍼티를 가지고 있고 필수로 구현해야 하며, body는 Scene 프로토콜을 따른다. 우리가 Swift에서 알고있..
-
Opaque TypeSwift 2022. 9. 21. 17:44
some 키워드 struct CircleImage: View { var body: some View { return Image("turtlerock") } } struct CircleImage_PreView: PreviewProvider { static var preview: some View { CircleImage() } 기본으로 import 되어있는 코드에서 타입 앞에 ‘some’이라는 키워드를 볼 수 있다. swiftui가 아닌 swift 5.1 이상에 구현되어 있는 기능이다. some은 Opaque type으로써 불투명한 타입이다. 불투명 타입? 불투명 타입은 도대체 뭐고 어떻게 왜 사용하는지에 대해 알아보자. Opaque type이란? 아래는 opaque type에 대한 overview이다. ..
-
Swift) 성능 최적화 - Dispatch와 메모리 할당Swift 2022. 8. 30. 22:28
평소에 하던 생각이 있다. '모바일에는 한계가 있다' 하드웨어의 스펙은 나날이 발전한다. 요즘의 아이폰 스펙은 어지간한 pc 못지않다. 게다가 대부분의 어플리케이션은 인터넷을 사용하는 네트워크 통신을 필요로하는 서비스이다. 이때 서비스의 performance를 올릴수 있는 방법은 벡엔드 단에서의 데이터처리이다. 네트워크 기반 서비스는 아무리 로컬에서 구현된 로직이 느려도 네트워크 환경이 좋다면 빠르게 느껴진다. 그럼 정말 클라이언트(앱)에서 할 수 있는게 없을까? 우리가 어떤 앱을 사용할때 이 앱 실행 속도 빠르다 라는 경험을 한 경우가 있을것이다. 그럼 이는 단순히 네트워크 속도가 빨라서일까? 이미지를 처리 하는 어플리케이션이 있다고 가정하자. 사이즈가 매우 커서 네트워크 환경이 아무리 좋아도 받아오는..
-
Singleton에 대한 의문과 의심기타 2022. 8. 26. 12:43
기존 프로젝트를 리팩토링 하는 과정에서 문득 들었던 의문이다. 통신을 통해 가져온 유저 데이터를 앱 실행중에 어떤식으로 가지고 있을까에 대한 고민중에 singleton과 userkey를 생각했다. singleton 과 userDefault 자, 그럼 둘중에 어떤 기술을 사용할지 선택해야 한다. 잠깐… userDefault도 내부적으로 singleton 패턴을 사용해서 저장하지 않나? 일단 비교해보자.. 사용 난이도 똑같다. singleton과 userDefault 모두 바로 접근하여 값을 가져올 수 있다. 안정성userDefault는 key-value 타입이다. 사용자가 직접 key를 입력해서 값을 가져온다.뭐… userDefault가 side effect로 부터 singleton에 비해 조금 더 강하다..
-
Swift) URLSession Network LayerSwift 2022. 8. 10. 19:37
iOS를 공부하다 보면 만나는 고민의 벽이 몇 가지 있다. 예를 들면 스토리보드냐 코드 베이스 레이아웃이냐.. 어떤 아키텍쳐를 사용할 것이냐... 컨벤션(줄 바꿈, branch 전략)은 어떤 식이 좋을까...? 지금 이 설계가 오버 엔지니어링은 아닐까? 이와 마찬가지로 고민되는 것이 네트워크의 모듈화. 즉, 네트워크의 레이어를 나누는 것이다. 왜 레이어를 나눠야 하나요? 지금 당장 Network Layer 키워드를 통해서 검색한 결과만 봐도 수많은 방법으로 나눈 레이어들이 존재한다. 프로토콜을 이용하거나, enum을 사용해서 EndPoint를 만든다거나, 심지어 모든 기능을 쪼개어 메서드 단위로 퍼사드 패턴들 적용한 사례도 있다. 이렇게 나누어 놓은 레이어들을 보면 오히려 흐름을 파악하기 어려운 경우도 ..