[Xcode] Library vs Framework - Multiple Project로 모듈화 공부하기 1편
·
📱 iOS/Xcode
본 시리즈에서는 우리 팀이 모듈화를 적용하기 위해 공부했던 과정 중 을 담아볼 건데요,이번 편에서는 Library vs Framework을 알아보겠습니다 ! 총 3편의 시리즈로 구성되어 있습니다..!그럼 레쯔고 〰️  문제 상황모듈화를 하면서 Library & Framework, Static & Dynamic에 대해 혼동이 왔음Library vs Framework 용어에 대한 개념 차이 문제 해결많은 블로그에서 Library vs Framework 용어에 대한 설명을 많이 올려두곤 한다.그러나, 글을 읽다보면 대부분이 용어를 혼용해서 모듈화를 설명하고 있다.본 포스팅에서는 간단하게 Library vs Framework 의 개념적 핵심만 살펴보겠다.  LibraryTarget에서 사용될 데이터와 코드들의 ..
[Algorithm] 비트마스킹 이론 & BOJ 11723 실습
·
🖥️ Computer Science/Algorithm
https://www.acmicpc.net/problem/11723위 11723을 푸는데, Set으로 풀어서 실패하고아래처럼 20개만 갖는 정수 배열로 0 1 판단을 했더니 실패했다.// 실패한 코드let M = Int(readLine()!)!var array = Array(repeating: 0, count: 20)(0..비트마스킹연산자 설명a & b: ANDa | b: ORa ^ b: XOR~a: NOTa : a를 b비트 만큼 왼쪽으로 옮김 (값 증가)a >> b: a를 오른쪽으로 옮김 (값 감소)할당 연산자|=: 비트 OR 할당 특정 비트를 켜는 것 var bit = 0 // 0000 bit |= (1 &=: 비트 AND 할당 특정 비트를 끄는 것 var bit = 6 // 0110 bi..
[Algorithm] 백준 32350 - Swift 풀이
·
🖥️ Computer Science/Algorithm
개요32350번 문제는 특별한 알고리즘을 요구하는 문제가 아닌, 구현 문제이다. 문제링크그러나 수많은 억까를 당하며 배운 내용을 정리해보겠다. 문제 풀이문제 이름 답게 '오버킬'이 발생하면 정상범위 인덱스 내에서 다음 인덱스의 값을 차감해야 한다.차감할 때는 '오버된 값의 p%'만큼 감소하는데여기서 나는 Int(floor(Double(abs(currentValue)) * (Double(p) * 0.01)))로 작성했다.그런데 이처럼 하면 87%에서 틀렸다고 뜬다.왤까 ?let NDp = readLine()!.split(separator: " ").map { Int($0)! }let N = NDp[0], D = NDp[1], p = NDp[2]var M = readLine()!.split(separator..
[메이드 인 스위프트] 자료구조 - 큐 Queue 구현해보기
·
🖥️ Computer Science/Data Structure
개요지난 Stack과 유사하게 기본적인 Queue를 구현하면서 자료구조 개념을 익혀보자이번에도 함수형 & 제네릭으로 작성해봤다. 코드 구현public struct KJQueue { private let queue: [Element] public var count: Int { queue.count } public var isEmpty: Bool { queue.isEmpty } public var peek: Element? { queue.first } // MARK: Initializer public init(_ queue: [Element] = []) { self.queue = queue } public func enqueue(_ value: Ele..
[메이드 인 스위프트] 자료구조 - 스택 Stack 구현해보기
·
🖥️ Computer Science/Data Structure
개요이번에 알고리즘 공부를 할 참이었는데,자료구조도 다시 공부하고 Swift로는 구현을 안 해본 거 같아서Swift로 구현해보고 이를 함수형을 지키며 불변성 & 순수 함수로 구현해보려 한다. 그냥 문뜩 Swift로 함수형 프로그래밍을 하고 싶어졌다.지난 번 Linked List를 함수형으로 만들었을 때 함수형으로 해볼 기회가 있었는데,거기서 매력을 느껴서 그런 것 같다. 코드 구현public struct KJStack { private let stack: [Element] public var count: Int { stack.count } public var isEmpty: Bool { stack.isEmpty } public var peek: Element? { stack.last..
네이버 부스트캠프 9기 iOS 과정을 마치며
·
✍🏻 회고록
2024년 5월에 지원했던 부스트캠프 9기,지난 12월 6일 금요일 수료식을 진행하고 완전히 끝마쳤다. 9기 안에서도 베이직 -> 챌린지 -> 멤버십,총 3개의 과정이 있는데 이 과정을 모두 수료한 현시점에서그간 성장한 경험과, 앞으로의 다짐을 담아 시간순으로 작성해 보겠다.1단계 - 베이직 (2주) 8기와 9기의 제일 다른 점은 베이직 과정이 생겼다는 점이다.개발자로서의 기초적인 지식을 쌓고, Swift의 기초를 다질 수 있었다. 1차 문제 해결력 테스트의 결과에 따라 베이직 과정 필수 이수, 혹은 2단계 챌린지 과정으로 직행위 2가지로 나뉘는데 나는 후자로, 베이직 과정을 이수하지 않아도 됐지만야곰 책으로 Swift 배운 지 얼마 안 된 나에게 더없이 좋은 기회라 생각해서 신청했다. 예상대로 베이직 ..
[UIKit] UIMenu 사용기
·
📱 iOS/UIKit
문제 상황버튼을 클릭했을 때, UIMenu를 띄워봅시당문제 해결UIButton의 menu/// An optional menu for the button to display. The button will automatically enable or disable its contextMenuInteraction when a non-nil or nil menu is set. Defaults to nil.@available(iOS 14.0, *)@NSCopying open var menu: UIMenu?UIButton에는 Menu라는 프로퍼티가 있다.iOS 14버전 이상부터 쓸 수 있음 !! dropDownButton.menu = UIMenu( title: "", children: [ UI..
드래그 앤 드랍 시 카테고리가 변경되어도 일관성 유지하기
·
📱 iOS
문제 상황지난 편에서 CollectionView Drag Drop 델리게이트를 통해서 드래그 앤 드랍을 구현했었다.근데 우리는 책 커버를 한 번에 모아볼 수 있는 “전체”도 있고, 특정 카테고리에 대한 책 커버만 보여줄 수도 있다.이것에 대한 일관성 처리를 어떻게 할 지 알아보자.문제 해결시나리오가족, 친구 두 카테고리와 책들이 다음과 같이 있다고 가정해보겠다. 이 상황에서 “가족” 카테고리에서 책1을 책3으로 옮겼다고 하자.나는 그러면 “전체”에서 볼 때도 책1은 책3 뒤에 있어야 한다고 생각한다.위처럼 말이다. 또한, 반대로 “전체”에서 책1을 책3으로 옮겨도,“가족” 카테고리에서 보면 책1은 책3 뒤에 있어야 한다고 생각한다. 나는 위 두 상황에 대한 일관성을 유지해주기 위해서 BookCover 모..
[UIKit] CollectionViewCell 드래그 앤 드랍 구현하기
·
📱 iOS/UIKit
문제 상황컬렉션 뷰의 셀들을 드래그 앤 드랍해야 할 일이 생겨서이에 대한 공부를 하고 정리해보려 한다 !문제 해결주요 메소드우리는 아래의 두 델리게이트 프로토콜을 사용할 것이고,델리게이트에서 총 3개의 메소드를 사용하여 드래그 앤 드랍을 구현할 거다.UICollectionViewDragDelegateUICollectionViewDropDelegate시작: collectionView(_:itemsForBeginning:at:)먼저 Drag 델리게이트의 메소드이다.처음 드래그가 시작될 때 호출되는 메소드로 말 그대로 “드래그”를 시작할 때 동작한다.중간: collectionView(_:dropSessionDidUpdate:withDestinationIndexPath:)Drop 델리게이트의 메소드이다.드래그 ..
MVVM 아키텍처 도입, 나의 ViewModel 사용법 (= Input-Output 패턴)
·
📱 iOS/Swift
문제 상황MVC 패턴의 코드 길어짐과 수많은 의존성을 컨트롤러가 갖는 문제,또한 View와 비즈니스 로직 분리 등을 위해 MVVM 도입했다.우리 팀에서 MVVM의 ViewModel을 어떻게 사용하기로 정의했는지 설명하겠다. 문제 해결MVVM 도입 결정MVC에선 Controller가 View와 Model 일을,MVP에선 Presenter와 View가 서로 일 주고받음MVVM에서 ViewModel은 Model하고만 소통함즉, 관심사 분리를 잘 해낼 수 있음위 특징 때문에 테스트 가능한 구조가 되어 테스팅도 가능MVC 패턴의 고질적인 컨트롤러에 많은 의존성이 쌓이는 문제를 덜어낼 수 있음 MVVM을 위한 Input-Output 패턴 도입우리팀은 Combine을 사용하여 프로젝트를 진행하고 있다.그리고 View..