✅ 문제: "Hello, Swift!"를 출력하는 함수를 선언하고 호출하세요.✅ 문제: 이름을 입력하면 "안녕하세요, \[이름]님!"을 출력하는 함수를 작성하세요.함수 이름: greet매개변수: name(문자열)반환값: 없음(Void)App Launch → Foregr
✅ 문제: 두 개의 정수를 입력받아 합을 반환하는 함수를 작성하세요.함수 이름: addNumbers매개변수: num1, num2 (정수)반환값: 두 수의 합 (정수)✅ 문제: 두 개의 정수를 입력받아 더 큰 수를 반환하는 함수를 작성하세요.함수 이름: numbersCo
→ 이름: Alice, 나이: 20, 출생 연도: 2003, 보유 차종: Optional("BMW") 출력→ 이름: Alice, 나이: 20, 출생 연도: 2003, 보유 차종: nil 출력print(type(of: car))→ Optional<String> 출력
배열(Array) : 빠른 조회(O(1)), 삽입/삭제 시 성능 저하(O(n))Code : 실행 중인 코드 저장Data : 전역 변수, 정적 변수 저장Heap : 동적 메모리 할당, 참조 타입(클래스) 저장Stack : 함수 호출, 지역 변수 저장가. 큐(Queue)
캡처(Capture) : 클로저는 외부 변수나 상수의 값을 캡처하여 클로저 내부에서 사용한다.→ 외부 변수 number를 캡처하여 클로저 내부에서 사용 - number 값이 변화⇒ 이는 참조 카운트를 증가 시키므로 강한 순환 참조가 일어날 가능성이 있음!➡︎ 순환 참조
동기(Synchronous) : 작업이 완료될 때까지 대기비동기(Asynchronous) : 작업 완료를 기다리지 않고 바로 다음 작업 실행Main Queue : UI 작업물 처리Global Queue : 백그라운드 작업 처리Custom Queue : 사용자 정의 작업
Combine : Apple에서 제공하는 반응형 프로그래밍 프레임워크→ 비동기 이벤트 및 데이터의 처리와 반응형 프로그래밍을 위한 프레임워크Publisher : 데이터를 제공하는 주체Subscriber : Publisher가 제공하는 데이터를 수신하고 처리하는 주체Op

팀 프로젝트 UI 구상을 위해 피그마를 처음 사용해보았다.어떻게 하는지는 전혀 모르고 UI만 그려보았는데 버튼을 눌렀을 때 어떤 화면으로 전환이 된다거나, 코드와 연계할 수 있다거나하는 기능이 많아 익숙해지면 다양하게 활용 가능할 것 같다.캠프에서 제공되는 강의에 피그

⚠️ git 클론 후 시뮬레이터 미작동 문제→ 최신 XCode 설치 시 해결 - Apple Developer에서 수동 설치하여 해결→ 터미널로 xcrun simctl list 시뮬레이터 리스트 조회⇒ xcrun simctl delete unavailable 미사용 시뮬
1. 미니 프로젝트 😵 트러블 슈팅 1) 오토레이아웃 문제 ⚠️ 문제: 한 객체 추가 시 다른 객체들이 보이지 않는 현상 발생 → ButtonSetBackgroundView 오토레이아웃 삽입 시 profileImage와 labelSet이 보이지 않는 현상 발생 ❗

SceneDelegate의 수정 필요→ 앱 진입 시 rootViewController를 navigationController로 설정💡 AppDelegate와 SceneDelegate의 차이: iOS에서 멀티윈도우를 지원하게 되면서 AppDelegate는 앱 자체의 생

기존 코드→ 함수를 통해 viewDidLayoutSubviews() 시점에 버튼을 원형으로 만듦💡 피드백viewDidLayoutSubviews() 시점이라도 오토레이아웃이 정확히 잡히지 않는 경우도 간혹 있음음→ layoutSubviews()를 사용하면 크기가 확정된

Github - yerin branch문제 요구사항에 따라 제네릭 함수로 구현하였는데 호출 시 경고 문구가 떴다.잘 선언해준 것 같은데 왜그러시는지...?빌드에는 문제가 없었다.구글링해보니 제네릭을 사용할 경우 컴파일러가 제네릭 타입을 추론할 수 있는 단서를 주어야 한
필수과제 4, 5 Pull Request타입을 체크하는 연산자 - 런타임 시점에 체크가 이루어짐as : 업캐스팅: 서브 클래스 인스턴스를 슈퍼 클래스 타입으로 참조⇒ 항상 성공! (실패할 경우 에러 발생)as? as! : 다운캐스팅: 슈퍼 클래스 인스턴스를 서브 클래스
과제 풀이 Github→ 특정 조건일 때만 메서드를 사용할 수 있도록 하는 방법!1) 제네릭 타입 정의2) 확장 시 조건 부여→ 타입 T가 Comparable을 준수하지 않으면 sortItems() 메소드는 보이지 않음➡︎ 매우 다양하게 쓰일 수 있는 패턴으로 숙지하기
1. 프로그래밍 기초 주차 과제 과제 풀이 Github 1) 순환 참조 구현 시 만났던 오류(?) ⚠️ 순환 참조 생성시 발견한 사소한(?) 오류 → 의도한 대로 순환참조 발생 → a와 b 모두 메모리에서 해제됨 🧐 둘다 동일한 방법으로 생성한 객체인데 왜

non-escaping 클로저 : 호출한 함수가 반환되기 전 실행되는 클로저escaping 클로저 : 호출한 함수가 반환된 후에도 실행 가능한 클로저→ 호출한 함수 바깥에서 실행되기 때문에 '탈출한다'고 표현⇒ 두 클로저를 구분하는 기준은 클로저가 언제 실행되느냐비동기

프로그래머스 Lv.1 자릿수 더하기함수 호출부에서 do-catch문으로 에러를 핸들링했으나 GameError에 정의된 에러 케이스를 모두 포함하였는데도 아래와 같은 오류가 발생→ 'Errors thrown from here are not handled because t
1) 프로그래머스 - 치킨 쿠폰2) 프로그래머스 - 리스트 자르기3) 프로그래머스 - 배열 조각하기코드 내 등장하는 여러 게임 메세지들을 하나의 열거형으로 분리하고 있다.대부분은 단순히 문자열을 원시값으로 정의하면 됐었는데, 힌트를 주는 부분에서 난관에 부딪혔다.기존의

프로그래머스 - 배열 조각하기→ forEach문 안에서 외부 변수인 result를 변경시키고 있음⇒ 고차함수는 보통 용도에 맞게 구현되어 있음→ 고차함수 내에서 용도와 다르게 사용된다면 코드를 읽는 사람에게 혼란을 야기할 수 있음→ forEach 요소별로 '동작'하게
1\. 프로그래머스 - 나머지가 1이 되는 수 찾기2\. 프로그래머스 - 최소직사각형접근법을 생각해내기가 쉽지 않았다...튜터님이 추천해주신 Swift github을 드디어 읽어보았다.Swift-algorithms-Unique.swift프로토콜에 대해서 잘 모르는 상태

reduce 고차함수는 단순히 배열같은 컬렉션을 하나의 연산을 하여 결과값을 나타내는 용도로만 사용할 수 있다고 생각했다.하지만 reduce 함수 내에 조건을 부여하여 단순한 사칙연산뿐만 아니라 원하는대로 마치 filter를 사용하는 것처럼 활용할 수 있다는 점을 알았
오늘은 하루종일 코테 문제만 풀었다...백준을 처음 사용해봤는데, 입력값을 받는 함수부터 모조리 구현해야해서 다른 사이트에 비해 번거로운 것 같다.새싹문제는 다 풀어볼까 싶지만.. 다음 단계를 풀지는 고민이다.그리고 오늘 제일 고전했던 문제2738번 행렬 덧셈→ 기존

프로그래머스 Lv.0 정복하기 진행중.오늘 아주 쉬운 문제 포함 23문제쯤 완료했다.코테 연습 깃헙문제 설명어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 sol

어제 봤던 영상에서 잘 이해가 가지 않던 부분들을 학습하였습니다.background에 있던 씬을 복원하기 위해 NSUserActivity 객체를 사용합니다.NSUserActivity는 특정 시점의 앱의 상태를 의미합니다.NSUserActivity 객체는 현재 앱의 상태

"1997-07-07" 형태의 문자를 "July 7, 197"로 변형해야 했다.dateFormatter를 활용하긴 했는데, 주어진 날짜를 Date 타입으로 변환하기 위해 calendar와 dateComponents를 사용했다.그런데 찾아보니 dateFormatter로

data.json에서 날짜 정보를 Date 타입으로 바로 파싱할 수 있는 방법이 있어 적용해보았다.dateDecodingStrategy를 활용하는 방법이다.JSONDecoder는 날짜 정보를 dateDecodingStrategy를 활용해서 파싱한다고 한다.기존에는 "1

지난 스크럼 때 JSON 데이터를 디코딩할 때 왜 dateDecodingStrategy를 쓰는 건지 이야기를 나누었다.그리고 그 이유에 대해 팀원분이 설명해주셔서 정리해보려 한다.어제 JSON 데이터를 파싱할 때, dateDecodingStrategy를 사용했다.그런데

UIButton의 타이틀 색상을 설정하는데 button.titleLabel?.textColor를 사용했더니 되지 않는다.button.setTitleColor를 사용하면 변경이 되는데, 왜 그런걸까?인터넷을 찾아다녀보았지만.. setTitleColor를 사용하라는 말뿐,
delegate 함수 네이밍에도 컨벤션이 존재한다.그냥 동작을 이름으로 사용하면 중복으로 생성되는 경우가 많아 어떤 객체에서 동작하는 함수인지 알기 어렵다.위 경우, delegate?.update()로 사용한다면 누구를 대신하여 업데이트하려는 것인지 메서드 이름만으로는
어제 풀었던 모닝 스터디 알고리즘 문제의 비트 연산(shift 연산)을 활용한 풀이를 소개받았다.기존 코드\-> reduce 고차함수 내에서 나머지 연산으로 결과 문자열 생성num % 2 == 1 ? string + "num변경 필요reversed()\` 사용하여 문자

카테고리 선택 부분을 UIsegmentedControl로 구현해보았다.CategorySegmentedControl 클래스를 생성하여 MainView에서 사용하였는데, 다른 커스텀 뷰처럼 CategorySegmentedControl()로 선언하니 오류가 발생했다.\->

너무 힘들다 컬렉션뷰compositional Layout을 만들기 위한 기본 개념은 위와 같다.item은 곧 1개의 셀이라 보면 되고, 셀의 묶음이 그룹, 그룹의 묶음이 섹션이다.위와 같은 grid CollectionView를 만들어보자.compositional lay
기존 delegate를 사용하던 구조에서 DataManager를 생성하여 뷰컨트롤러들에서 접근해 사용하는 방식으로 변경하였다.그 과정에서 기존 사용하던 저장 프로퍼티의 타입을 변경해야했는데, 구현해둔 로직이 깨져 난감하던 차에 Identified collection이라
lv.2 가장 큰 수처음 접근 방법을 떠올리는 것이 너무 어려웠다.주어진 숫자 % 10 으로 정렬하여 풀어보았지만, 주어지는 숫자는 1000 이하의 범위이므로 세자리 숫자일 경우 기존 풀이 방법은 전혀 효과를 보지 못했다.초기 코드매우 헤매던 그때 튜터님의 힌트로 최종

lv 2. 가장 큰 수기존 코드변경 코드\-> Int 타입인 numbers의 요소를 Int -> String, String -> Int 타입으로의 변환이 많이 일어나서 타입 변환의 횟수를 줄이는 방향으로 개선lv 2. 프로세스기존 코드변경 코드\-> while문 내에서
프로그래머스 lv2. \[1차] 캐시문제 조건을 잘못 이해해서 삽질을 조금 했다.다음엔 차분히 문제를 살펴보도록 해야겠다.개인 과제 진행 중 url의 마지막 부분만 변경하고 싶어 URLComponents를 활용하는 방법을 찾아보았다.우선 url 구조를 살펴보자.위 ur

⚠️ 문제: searchBar.backgroundColor 미적용위 코드를 적용했으나 의도한 색상과는 달리 흐리게 표현된다.❗️ 원인: UISearchBarBackground 이미지.red로 설정된 background 위에 하나의 뷰가 더 올라가있다.UISearchBa
도전 레벨의 메모리 누수 디버깅 내용 관련하여, 여러 방법이 있어 활용해보았다.메모리 그래프에서는 별다른 느낌표가 발생하지 않았다.메모리 사용량 확인 시에도 메모리 사용량이 크게 튄 부분이 없는 것으로 보인다.Leaks Instrument를 활용해보아도 감지되는 누수가

1. 알고리즘 문제풀이 [프로그래머스 lv.2 타겟 넘버] 접근 방법을 전혀 몰랐는데 튜터님과 다른 분의 해설을 듣고 이해가 되었다. 주어진 숫자들이 4, 1, 2, 1일 때, 트리 구조로 그리면 아래와 같아진다. 1) BFS 이 트리를 너비 우선 탐색(BFS)으

⚠️ 문제: mapView에 배치한 버튼의 isHighlighted 상태가 미해제 되는 현상mapView에 배치한 버튼이 클릭 후 isHighlighted 상태가 해제되지 않는 현상이 나타났다.❗️ 원인: 잘못된 addSubview 주체 선정currentLocation
드디어 프로젝트가 끝났다.새벽까지 팀원들이랑 열심히 했는데 기획에 너무 욕심을 부린건지.. 생각보다 기획했던 기능을 많이 구현하지 못해 아쉬움이 많이 남는다.그래도 그와 별개로 UI를 좀 예쁘게 잘 만들지 않았나..싶어 만족스럽다.외부 API도 많이 이용해볼 수 있어
RxSwift를 적용하여 과제를 구현해보았는데, 한 가지 의문점이 생겼다.위는 RxSwift를 확장한 코드이다.확장한 코드를 사용할 때는 아래와 같다.fetchRates()의 호출부에서 다시 SimpleRate 타입으로 변환하여 .asObservable를 통해 다시 O

Coordinator 패턴이란 ViewController의 화면 전환의 책임을 Coordinator에게 맡기는 것이다.Coordinator를 통해 의존성을 주입하고 각 VC 간의 화면 전환을 함으로써 VC는 UI와 사용자와의 이벤트 상호작용에만 집중할 수 있다.이전에
봄 섹션의 카드 셀을 눌렀을 때만 미리듣기가 재생되고, 다른 섹션을 눌렀을 때는 미리듣기가 재생되지 않도록 구현하였다.그런데 다른 섹션을 눌렀을 때 Alert을 띄운 후, 다시 다른 셀을 누르면 어떠한 동작도 하지 않는 현상을 발견했다.기존 코드기존 코드에서는 fetc

마지막 작은 카드뷰의 타이틀을 나타내는 StackView에 arrange된 ImageView의 크기가 늘어나는 현상StackView의 우선순위가 설정되어있지 않아 ImageView와 Label 중 하나가 무작위로 width 크기가 변경된 것이 원인HuggingPrior

어제 그 문제가 다시 발생...카드뷰를 생성하여 카드뷰 위에 차트뷰를 올리고, 카드뷰의 우선순위를 낮춰주었는데 의도한대로 동작하지 않음chartHostingController.view(차트뷰)는 카드뷰에 오토레이아웃을 걸어뒀으니 카드 크기만큼 크기가 결정되고, 카드 크
최종 프로젝트에 AI를 활용해보도록 결정했다.어떤 AI 모델을 사용할 것인지에 대해 오랜 시간 고민을 하여, 해당 논의에 대하여 정리해보았다.식물 등록 시 사진을 입력하여 해당 식물을 식별하고, 해당 식물에 대한 정보를 자동으로 입력되고자 함.→ 식별할 때 사용할 AI
개발 기본사항 - 아키텍처, 활용 라이브러리에 관해 논의함MVVM - 이견 없음Coordinator 패턴기획안 고려 시 잦은 화면 전환 발생 가능성 있음 → 부모 컨트롤러의 호출을 통한 화면 전환을 지양하기 위해 Coordinator 패턴 사용이 제안됨 RxSwi
RxFlow에서는 다음과 같은 용어들을 사용합니다.Flow: 각 Flow는 앱 내에서의 네비게이션 영역을 의미합니다.Step: 각 Step은 '앱의 네비게이션 상태(state)'를 의미합니다."이 화면으로 가고싶어"라는 뜻이라기 보다는, "누군가 혹은 어떤 것이 이
모델이 요구하는 사양에 맞추어 inputData를 가공해야함\-> 이미지 분석 모델이므로 이미지 데이터를 가공1) input으로 요구하는 이미지 크기에 맞게 분석 대상 이미지 자르기2) 리사이징한 이미지에서 비트맵 데이터 추출 : RGB값 (0~255)이 담긴 배열 데
Splash 화면이 로드된 후, nextStep으로 .loginRequired 를 전달하였는데 로그인 화면으로 전환되지 않는 문제가 발생했다.브레이크 포인트를 걸어 nextStep 값이 .loginRequired 로 할당되는 것은 확인하였다.AppFlow에서 root를