본문 바로가기

전체 글

(356)
Swift 자료구조 배열- 데이터를 순차적으로 저장하는 구조- 인덱스를 사용해 특정위치의 요소에 접근할 수 있음- 특정 인덱스를 통해 접근하는 것은 빠르지만(O(1)), 삽입/삭제 과정은 오래걸린다(O(n)) 예시  큐선입선출의 형식인 데이터구조 (FIFO)- Enqueue: 큐 맨 뒤에 요소 추가- Dequeue: 큐 맨 앞의 데이터를 반환- Peek: Front에 위치한 데이터 값 반환- Front: 큐의 앞부분 (가장 먼저 들어온 데이터가 위치함)- Rear: 큐의 뒷부분 ( 가장 최근에 들어온 데이터가 위치함) dequeue하는 과정에서 removeFirst() 메소드를 이용한다면 시간복잡도가 O(n)이 걸리게된다.이를 해결하기위해 index를 이용해 front부분을 확인하여 데이터를 반환하는 방법도 있지만,reve..
Swift 구조체와 클래스 구조체와 클래스는 비슷하면서 서로 다른 성질을 갖고 있습니다.먼저 공통점으로는 다음과 같습니다.- 변수나 상수를 사용하여 값을 저장하는 프로퍼티로 정의할 수 있음- 함수를 사용하여 기능을 제공하는 메서드로 정의할 수 있음- 속성값에 접근할 수 있는 방법을 제공하는 서브스크립트를 정의할 수 있음- 객체를 원하는 초기 상태로 설정해주는 초기화 블록(init)을 정의할 수 있음- 객체에 함수적 기능을 추가하는 확장 구문을 사용할 수 있음- 특정 형식의 함수적 표준을 제공하기 위한 프로토콜을 구현할 수 있음 이와 같은 공통점이 있지만, 구조체에서는 안되지만 클래스에서는 할 수 있는 기능이 다음과 같이 있습니다.- 클래스의 특성을 다른 클래스에게 물려줄 수 없음- 실행 시 컴파일러가 클래스 인스턴스의 타입을 미리..
URLSession 번역 https://developer.apple.com/documentation/foundation/urlsession URLSession | Apple Developer DocumentationAn object that coordinates a group of related, network data transfer tasks.developer.apple.com  URLSession네트워크 데이터 통신 작업과 관련된 그룹을 조정하는 객체 해당 클래스는 URL로 표시된 엔드포인트에서 데이터를 다운로드하거나 업로드 하기 위한 API를 제공한다.또한 앱이 실행되지 않거나 일시정지된 시점에서도 백그라운드에서 다운로드할 수 있는 기능을 제공URLSessionDelegate와 URLSessionTaskDelegate를 ..
Fetching website data into memory Fetching website data into memoryReceive data directly into memory by creating a data task from a URL sessionURLSession에서 DataTask를 생성하여 데이터를 메모리로 직접 수신한다.For small interactions with remote servers, you can use the URLSessionDataTask class to receive response data into memory (as opposed to using the URLSessionDownloadTask class, which stores the data directly to the file system)원격서버와 소규모 상호 작용의..
URL Loading System 번역 https://developer.apple.com/documentation/foundation/url_loading_system URL Loading System | Apple Developer DocumentationInteract with URLs and communicate with servers using standard Internet protocols.developer.apple.com URL Loading SystemInteract with URLs and communicate with servers using standard Internet protocols표준 인터넷 프로토콜을 사용하여 URL과 상호작용하고 서버와 통신합니다.The URL Loading System provides acc..
SwiftGen 사용 https://github.com/SwiftGen/SwiftGen GitHub - SwiftGen/SwiftGen: The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all SThe Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! - SwiftGen/SwiftGengithub.com SwiftGenSwiftGen은 프로젝트의 리소스(이미지, 컬러, JSON, 문자열 등)를 Swift코드로 자동 생성해 주어 사용하는 라이브러리입니다. 기존에는 As..
[iOS][버그해결] 이중으로 들어간 CollectionViewCell안 CollectionViewCell이 재사용되는 버그 배경프로젝트를 진행하던 도중..CollectionViewCell안 CollectionViewCell의 내용이 재사용되어 정확한 셀의 내용을 포함하지 않게 되는 버그를 발견하였습니다.#관광지는 아래 해시태그원에 관광지가 포함되어야 하고,#음식은 음식, #숙박은 숙박이 포함되어야 합니다.하지만 처음 검색 후 데이터를 불러왔을 때, 생성된 셀을 바탕으로 재사용된 버그를 발견하였습니다.   시도해 본 방법CollectionViewCell은 커스텀 셀을 사용하기 위해 재사용 셀을 사용했습니다.// 재사용 셀 지정guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: SearchCollectionViewCell.identifier, for:..
Swift Concurrency 정리 - Swift.org를 참고하여 작성 Swift는 구조화된 방식으로 비동기 및 병렬 코드를 작성하기위해 기본적으로 기능을 제공합니다.Swift의 언어자원을 사용하지 않고도 동시코드를 작성할 수 있지만, 읽기가 더 어렵고 복잡합니다. 사용하지 않은 예listPhotos(inGallery: "Summer Vacation") { photoNames in let sortedNames = photoNames.sorted() let name = sortedNames[0] downloadPhoto(named: name) { photo in show(photo) }}위 예제에서도 코드를 완료 핸들러로 작성해야 하기 때문에 중첩된 클로저를 사용하게 되고, 코드가 더 복잡하여 다루기 힘들..