본문 바로가기

전체 글56

[TIL] 20230404: URLSession 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. URLSession URLSession 클래스와 관련된 클래스는 URL로 표시된 데이터를 다운로드하고 업로드하기 위한 API를 제공한다. 앱이 실행되고 있지 않을 때, 혹은 iOS에서 앱이 일시 중단 되었을 때에도 역시 백그라운드 다운로드를 수행하기 위해 이 API를 사용할 수 있다. URLSessionDelegate와 URLSessionTaskDelegate를 이용해 인증을 지원하고 리디렉션 및 작업 완료와 같은 이벤트를 수신할 수 있다. 앱은 하나 혹은 그 이상의 URLSession 인스턴스를 생성하며, 각각의 인스턴스는 관련된 데이터 전송 작업 그룹을 조정한다. 예를 들어서, 만약 웹 브라우저를 만든다면, 앱은 탭이나 .. 2023. 4. 5.
[TIL] 20230330: Escaping closure/Defer 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. Escaping closure/Defer 둘의 차이를 잘 모르겠어서 조금 공부해봤다. 알아보니 완전 다른 것인..ㅎㅎ^^ escaping closure는 언제 실행될지 확신이 없는 것이고, defer는 함수 종료를 하면서 문 닫고 나가면서 실행하는 것이다. escaping closure는 언제 실행될지 모르지만 언젠가 불린다는 것이다. escaping closure 어떤 클로저가 메서드의 인자로 전달 되지만, 메서드가 반환된 후에 불릴 때 이것을 메서드를 escape한다고 말한다. 매개변수로 클로저를 취하는 메서드를 정의할 때, 그 클로저가 escape하게 만들기 위해서 @escaping을 매개변수의 앞에 쓴다. 클로저가 e.. 2023. 4. 4.
[TIL] 20230327: class/struct, 네트워크 통신 없이 Test하는 이유 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. class/struct 클래스와 구조체를 구별해서 구현하는 것은 아직까진 영원한 숙제일 것 같다. 박스오피스 프로젝트를 하면서 NetworkManager라는 타입을 구조체로 구현하였다. 이 구조체는 URLSession을 사용하여 URL이 주어졌을 때, 그에 해당하는 data를 가져오는 역할을 하는 구조체이다. 이에 대해 지성께서 struct로 구현한 이유가 있냐고 물었고 나는 다음과 같이 답했다. class는 다음과 같을 때 사용합니다: 1. 복사보다는 참조가 필요할 때 2. 상속해주거나 상속받을 일이 필요할 때 3. mutable한 값들을 가질 때 4. object-C와 상호 운용성을 가질 때 저희는 NetworkManag.. 2023. 3. 28.
[TIL] 20230321: Fetching Website Data into Memory 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. Overview remote 서버와 작은 상호작용의 경우, 응답 데이터를 메모리로 받아오기 위해서 URLSessionDataTask 클래스를 사용할 수 있다. (데이터를 직접적으로 파일 시스템에 저장하는 URLSessionDownloadTask 클래스를 사용하는 경우와 반대로) 데이터 작업은 웹 서비스 endpoint를 호출하는 것과 같은 용도에 이상적이다. URL 세션 인스턴스를 사용해서 작업을 생성할 수 있다. 만약 요구사항이 간단하다면, URLSession 클래스의 shared 인스턴스를 사용할 수 있다. 만약 델리게이트 콜백을 통한 전송과 상호작용하려면, shared 인스턴스를 사용하는 대신에 세션 하나를 만들어야할 .. 2023. 3. 25.
[TIL] 20230317: Responder Chain / Touch Event 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. Touch Event Handling 사용 import UIKit class ViewController: UIViewController { var horizontalDirectionText = String() var verticalDirectionText = String() var touchLocation: CGPoint = CGPoint(x: 0, y: 0) { didSet { if touchLocation.x > oldValue.x { horizontalDirectionText = "우" } else if touchLocation.x < oldValue.x { horizontalDirectionText = "좌" } el.. 2023. 3. 18.
[CODE STARTER 복습] 20230317: week01 본문은 야곰 아카데미 코드 스타터 캠프를 통해 복습한 내용을 회고한 글입니다. 11. 기본 데이터 타입 문자 타입 Character값에 유니코드 문자 사용 가능 한글도 유니코드 문자에 속하므로 swift 코드의 변수 이름으로 사용할 수 있음 문자열 타입 이니셜라이저를 통해 빈 문자열을 생성할 수 있음 var introduceText: String = String() append(): 문자열을 이어붙일 수 있음(+연산자와 같은 기능) introduceText.append("우리 강아지 이름은 ") // 우리 강아지 이름은 introduceText += "호두입니다." // 우리 강아지 이름은 호두입니다. isEmpty: String의 경우에도 빈 문자열인지 확인할 수 있음 var introduceText:.. 2023. 3. 17.