일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- coremotion
- TableView
- 강한 참조 순환
- NavigationSearchBar
- firebase
- @escaping
- retain cycle
- UIKit
- 프로그래머스
- Reference Cycle
- 면접을 위한 CS전공 지식 노트
- class struct
- tableview section별 다른 cell적용
- 면접을 위한 CS 전공 지식 노트 Tree
- CoreData
- TableView Section
- UserDefaults
- 롤케이크 자르기
- SWIFT
- Array vs Linked List
- 양궁대회
- Input Output
- 자료구조
- 테이블뷰 나누기
- til
- ReferceCycle
- Value Type Reference Type
- CarouselCollectionview
- wil
- Carousel CollectionView
- Today
- Total
목록분류 전체보기 (63)
개발하는 동글 :]
TIL Result 타입의 내부 @frozen public enum Result { case success(Success) case failure(Failure) @inlinable public func map( _ transform: (Success) -> NewSuccess ) -> Result { switch self { case let .success(success): return .success(transform(success)) case let .failure(failure): return .failure(failure) } } @inlinable public func mapError( _ transform: (Failure) -> NewFailure ) -> Result { switch se..
WIL Keep 1. 문제상황을 팀과 공유 이번 팀프로젝트의 경험 중 좋았던 부분은 문제상황을 팀단위로 고민할 수 있었던 것이다. 물론 시도도 해보지 않고 문제를 공유하는 것과 다양한 시도를 한 뒤 공유하는 것은 다른 이야기이다 하지만 다양한 시도를 해본 뒤 문제를 공유하는 것은 팀에게도 다양한 경험을 줄 수 있다고 생각하며 문제를 해결해 나가며 문제 해결 능력이 향상될 수 있다고 생각한다. 2. 정확한 목표를 설정 프로젝트를 시작할 당시 우리 팀은 팀원 개인의 역량을 정확히 가늠할 수 없기에 막연한 목표보다는 달성가능한 목표를 잡은 후 추후 달성했을 시에 목표를 더 확장할 수 있도록 설정하였다. 물론 처음부터 더 큰 목표를 가지고 도전하였다면 모두가 분발하여 더 큰 목표에 도달할 수 있을 것 같다는 생..
1. Closure? Unnamed Closure와 Named Closure를 둘 다 포함 1.1 Named Closure, Unnamed Closure Named Closure : 평소와 같이 선언해 왔던 함수 func doSomething() { print("Somaker") } Unnamed Closure : 이름을 붙이지 않고 사용하는 함수 let closure = { print("Somaker") } 1.2 스위프트는 함수를 일급객체로 취급한다. 일급객체로 취급한다면? 함수를 변수에 할당할 수 있음 함수를 호출할 때 함수를 파라미터로 전달할 수 있음 함수에서 함수를 반환할 수 있음 2. Closure의 형태 {(Parameters) -> (Return Type) in 실행구문 return (Re..
Why? api사용을 연습해 보던 중 튜터님이 retain cycle이 생길 것 같다는 조언을 해주셔서 retain cycle이 뭔지 공부시작 TIL 1. Swift는 어떻게 메모리를 관리할까? Swift의 메모리는 대부분 ARC(automatic reference counting)가 관리해 준다. 기본적으로 클래스의 객체를 가리키는 각각의 reference(참조)는 강한 참조이다. 강한 참조가 있는 한 이 객체의 메모리는 해제되지 않을 것이다. 만일 객체에 대한 강한 참조가 존재하지 않는다면 이는 메모리에서 해제될 것이다. ARC - Swift의 메모리 사용량 추적 및 관리 시스템. - ARC는 더 이상 필요하지 않은 클래스 인스턴스를 자동으로 메모리에서 해제한다. import UIKit class T..
Why? api를 사용하여 데이터를 받아오는 과정 중 잘 이해가 되지 않는 문법을 발견함 TIL @escaping ? 클로저의 실행이 본래 함수를 벗어나서도 실행되도록 하는 키워드 Non-Escaping Closure func nonEscaping(closure: () -> () ){ closure() } 클로저가 실행되는 순서 클로저가 함수의 인자로 전달됨 함수 안에서 closure 가 실행됨 함수가 값을 반환하고 종료됨 메모리 함수내에서 단순하게 실행하고 종료하기 때문에 클로저를 힙영역이 아닌 일반 스택영역에 저장 Escaping Closure class ViewModel { var completionhandler: (() -> Void)? = nil func fetchData(completion:..
Why? memo app을 따라 만들어 보며 메모를 삭제하였을 때 하단의 메모 개수가 변경되지 않는 문제가 발생한 적이 있다 이러한 문제를 해결하는 과정으로는 해당 뷰의 viewWillAppear 메서드에 tableview와 collectionview, toolbar를 업데이트 및 다시 할당을 하니 문제를 해결 할 수 있었다. 그렇기에 viewWillAppear 메서드는 무엇이며 UIViewController에 어떠한 메서드와 프로퍼티가 있는지 확인해 봐야겠다는 생각이 들었다. override func viewWillAppear(_ animated: Bool) { // 화면이 새롭게 그려질 때마다 호출됨 myTableView.reloadData() myCollectionView.reloadData() s..
Why? 메모 앱의 기능중 갤러리로 보기를 구현하기 위해 CollectionView가 필요하여 구현하게 됨 TIL 문제 상황: 버튼을 누를시 리스트 형식의 뷰에서 갤러리 형식으로 바꿔서 보여줘야함 -> 데이터의 isTable 프로퍼티에 따라 tableview와 collectionview의 히든 값을 조정하여 구현 dataManager.isTable ? tableViewOn() : collectionViewOn() 동일한 위치에 tableview와 collectionview를 둠으로써 hidden값을 이용해 화면 구성이 가능해짐 CollectionView 코드 extension Page2ViewController: UICollectionViewDataSource, UICollectionViewDelega..
이번 주 목표 내일 배움 캠프 커리큘럼을 따라가며 커리큘럼의 내용 잘 흡수하기 아이폰 Setting App UI에 디테일 한 부분 및 약간의 기능추가 해보기, [0730] 프로토콜, [0730] 계산 속성, [0730] 접근 제어, [0730] 동기 비동기, [0730] 다음 주 목표 프로토콜, [0730] 계산 속성, [0730] 접근 제어, [0730] 동기 비동기, [0730] 내용 1. 내일 배움 캠프 커리큘럼을 따라가며 커리큘럼의 내용 잘 흡수하기 나와 스터디원들은 이번 주의 과제를 좀 더 높은 목표로 구현하는 것을 목표로 하였다. 그렇기에 시작된 기본 메모앱을 따라 만들어 보며 CRUD 및 화면 전환을 익힐 수 있었다. 생각했던 것보다 어렵고 시간이 많이 걸렸지만 메모앱을 따라 만들어보며 접하..
Why? memo앱을 종료한 후 재실행 하였을 때 데이터가 없어지는 문제가 있음 TIL UserDefaults 를 사용하기로 함 1. 저장할 데이터의 모델에 Codable 프로토콜을 채택한다. class FolderSection:Codable{ var folderDatas:[FolderData] } class FolderData:Codable{ var memoSections:[MemoSection] } class MemoSection:Codable{ var memoDatas:[MemoData] } class MemoData:Codable{ var content:String var date:String var info:String init(content: String, date: String, info: ..
Why? cell을 추가할 때 cell이 바로 나오지 않음 하단의 n개의 메모가 반영되지 않음 TIL 1. 메모가 추가되는 메서드에 아래의 코드를 추가하여 해결 myTableView.reloadData() 2. viewWillAppear에 tool 바를 다시 재정의?를 해줌 override func viewWillAppear(_ animated: Bool) { // 화면이 새롭게 그려질 때마다 호출됨 myTableView.reloadData() self.toolbarItems = makeToolbarItems() } 결과 모습
Why? 아이폰 설정앱을 따라 만들어 보던 중 위쪽 서치바가 특정 상황에 따라 보인다는 것을 발견하였다. 그렇기에 그것을 구현해 보려 SearchBar 가 포함된 cell을 만들어 보기도 하였고, 테이블 뷰 위에 그냥 SearchBar를 추가해보기도 하던 중 간단한 방법을 발견하였다. TIL 스크롤시 보이는 서치바 구현 1. UISearchController 프로퍼티를 만들어 준다. let searchController = UISearchController(searchResultsController: nil) 2. TableView의 내장 함수인 scrollViewDidScroll 메서드를 이용하여 스크롤 값이 변할 때 Navigation의 SearchController를 위에 선언한 프로퍼티로 변경해 ..
이번 주 목표 내일배움캠프 커리큘럼을 따라가며 커리큘럼의 내용 잘 흡수하기 스토리 보드를 사용하여 아이폰 Setting App UI구현해 보기 다음 주 목표 내일배움캠프 커리큘럼을 따라가며 커리큘럼의 내용 잘 흡수하기 아이폰 Setting App UI에 디테일 한 부분 및 약간의 기능추가 해보기,[0730] 프로토콜,[0730] 계산 속성,[0730] 접근 제어,[0730] 동기 비동기,[0730] 내용 내일배움캠프 커리큘럼을 따라가며 커리큘럼의 내용 잘 흡수하기 이번 주의 커리큘럼은 팀과함께 협업하여 커멘드 라인을 이용한 키오스크 프로그램을 만드는 것이 목표였다. 처음 While문을 이용하여 스위치문으로 종료하는 입력을 받기 전까지 계속하여 반복하는 형태를 떠올려 앞서 말한 형태의 프로그램을 만들기 시..
Enum(열거형)이란? 관련된 값으로 이루어진 그룹을 공통의 type(형)을 선언해 type-safety를 보장하는 방법으로 코드를 다룰 수 있게 해준다. C나 Objective-C가 Integer(정수형)값들로 열거형을 구성한 것에 반해 Swift에서는 case값이 string, character, integer, floting 값들을 사용할 수 있다. 열거형은 1급 타입(first-class types)*이어서 계산된 프로퍼티(computed properties)를 제공하거나 초기화를 지정하거나, 초기 선언을 확장해 사용할 수 있다. 열거형 문법 (Enumeration Syntax) 다음은 네 가지 방향을 갖는 CompassPoint 열거형 선언의 예시 case를 콤마로 구분해서 한줄에 적을 수 있다..
적용 화면 ViewDidLoad() @IBOutlet weak var myTableView: UITableView! var dataManager = DataManager() override func viewDidLoad() { super.viewDidLoad() myTableView.dataSource = self } 테이블 뷰 속성을 만들어 주고 , datasource를 자신으로 할당해 준다. extension extension ViewController: UITableViewDataSource, UITableViewDelegate{ // Section 갯수 지정 func numberOfSections(in tableView: UITableView) -> Int { return dataManager.s..
음수 계산이 되지 않았던 기존의 방식은 문자열을 배열로 만들 때 숫자인지 아닌지를 기준으로 분리를 했었다. 하지만 그렇게 할 시 음수가 배열에 저장되면 부호를 따로 빼서 저장을 하는 문제가 발생하였었기에 부호를 추가할 때 양 옆으로 공백의 문자열을 추가한 뒤 배열로 만들 때 공백을 기준으로 배열을 만들어보니 문제가 해결 되었다. // // ViewController.swift // fisrtCalcu // // Created by SeoJunYoung on 2023/07/17. // import UIKit class ViewController: UIViewController { var buttonTitle = ["7","8","9","+/-","4","5","6","*","1","2","3","/","0..
시작 7월 10일부터 내일 배움 캠프에 합류하여 목적지는 다르더라도 같은 방향을 바라보는 동료들과 함께 학습을 시작하였다. [0710... 0714] 주 [0710... 0714] 학습목표: Flutter를 이용하여 간단한 미니 프로젝트를 구현 처음 만난 사람들과 게더라는 낯선 공간에서 독학만 해보았던 나에게는 어색한 팀 프로젝트를 진행하게 되었다. 모든 걱정을 잊게 해줄 만큼 팀원들은 좋은 사람들이었으며, 팀프로젝트를 통하여 모두 다른 경험을 가지고 만난 동료들의 경험을 공유받을 수 있다는 것이 나에게 엄청난 경험치가 될 수 있는 것을 체감하였다. 아쉬운 점 : 깃 사용법 공부 및 협업을 할 때 적극적인 의사소통의 노력 그래도 조금 아쉬운 점을 생각해 본다면, 조금 더 캠을 켜고 동료들과 소통하는 것이..
분리한 문자열을 압축하는 방식으로 더하기 - 빼기 - 나누기 - 곱하기 순으로 함수가 작동할 수 있도록 구현. 문제 상황 : 문자열을 ["+", "-", "*", "/"] 로 분리하여 음수의 부호를 분리해 버려 음수 계산이 안되는 문제. -> 로직을 문자열이 아닌 다른 방식으로 전달 받으면 해결 할 수 있을거 같음. // // DataManager.swift // CoupangClon // // Created by SeoJunYoung on 2023/02/10. // import UIKit class DataManager { var nowNum: String var numsAry:[Double] = [] var calToggle = true init(nowNum:String){ self.nowNum = ..
구현 목표 - 코드로 UI 구성하기 :완료 - 문자열을 리턴 받아 문자열을 분리하여 배열로 만들어 준 후 연산하는 기능 구현 하기 : 데이터를 문자열로 전달 받아 배열로 분리하는 과정까지 진행 ex) "123+123" -> ["123","+","123"] // // ViewController.swift // fisrtCalcu // // Created by SeoJunYoung on 2023/07/17. // import UIKit class ViewController: UIViewController { var buttonTitle = ["7","8","9","+/-","4","5","6","*","1","2","3","/","0",".","AC","="] var dataManager = DataMana..
CollectionView를 사용하는 순서 UICollectionView 타입의 속성을 하나 생성한다. let slideView: UICollectionView = { let flowLayout = UICollectionViewFlowLayout() flowLayout.itemSize = CGSize(width: 50 , height: 50) flowLayout.sectionInset = UIEdgeInsets(top: 5, left: 10, bottom: 5, right: 10) let collectionView = UICollectionView(frame: .zero, collectionViewLayout: flowLayout) collectionView.translatesAutoresizingMas..
ArraySlice란 ? struct ArraySlice ArraySlice : Array, ContiguousArray 또는 ArraySlice 인스턴스의 slice ArraySlice타입의 특징 더 큰 배열의 section에서 작업을 빠르고 호율적으로 수행 할 수 있다. 슬라이스 요소를 새 저장소로 복사하는 대신, ArraySlice인스턴스는 더 큰 배열의 저장소에 대한 view를 제공 -> COW COW 란? (Copy On Write) 컴퓨터 프로그래밍에서 복사 동작을 할 때,실제 원본이나 복사본이 수정되기 전까지는 복사를 하지 않고 원본 리소스를 공유함 원본이나 복사본에서 수정이 일어날 경우, 그때 복사하는 작업을 함 또한 ArraySlice는 Array와 동일한 인터페이스를 제공하므로, 일반적..