iOS 52

WWDC16) Understanding Swift Performance - 1

주제: 디자인 공간을 좁히고 작업에 적합한 올바른 도구를 선택하는 방법 Swift의 다른 추상화 메커니즘의 모델링 영향을 고려 값 또는 참조 세마틱스 중 어떤 것이 적합한지 이 추상화를 얼마나 동적으로 만들어야 할지 메모리 할당 빠른 Swift 코드를 작성하려면 우리는 활용하지 않는 동적성과 런타임에 대한 가격을 피해야 합니다. Swift는 자동으로 메모리를 할당하고 해제 합니다. 그 중 일부는 스택에 할당 됩니다. Stack 스택은 매우 간단한 데이터 구조 입니다. 스택의 끝에 push할 수 있고, 스택의 끝에서 pop할 수 있습니다. 스택은 항상 끝에서 추가 및 제거가 일어나기 떄문에 끝점을 가리키는 포인터만 유지하면 됩니다. 스택 포인터라고 불리는 스택의 끝점에 메모리를 할당 할 수 있음을 의미 합..

iOS/WWDC 2023.04.28

클로저 (Closures) - 클로저 표현

클로저 (Closure)는 코드블럭으로 C와 Objective-C의 블럭(blocks)과 다른 언어의 람다(lambdas)와 비슷 합니다. 클로저는 어떤 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다. Swift는 이 캡쳐와 관련된 모든 메모리를 알아서 처리 합니다. 캡처의 개념에 대해 익숙하지 않다고 걱정하지 않으셔도 됩니다. 값 캡쳐는 아래에서 자세히 설명해 두었습니다. 전역 함수(global functions)와 중첩 함수(nested function)은 실제 클로저의 특별한 경우 입니다. 클로저는 다음 세 가지 형태 중 하나를 갖습니다. 전역 함수: 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 중첩 함수: 이름이 있고 관련된 함수로 부터 캡쳐할 수 있는 클로저 클로저 표현: 경량..

iOS/Swift 2023.04.25

콜렉션 타입(Collection Types) - 셋(Sets)

셋(Sets) set 형태로 저장되기 위해서는 반드시 타입이 hashable이어야만 합니다. Swift에서 String, Int, Double, Bool 같은 기본 타입은 기본적으로 hashable 입니다. Swift에서 Set 타입은 Set으로 선언 합니다. 빈 Set생성 var letters = Set() print(letters.count) // 0 letters.insert("a") letters = [] 배열 리터럴을 이용한 Set생성 var favoriteGeneres: Set = ["Rock", "Classical", "Hip hop"] Swift의 타입추론으로 아래와 같이 선언도 가능 합니다. var facoriteGeneres: Set = ["Rock", "Classical", "Hip ..

iOS/Swift 2023.04.21

콜렉션 타입(Collection Types) - Array

Swift에서는 콜렉션 타입으로 Array, Set, Dictionary 세 가지를 지원 합니다. 콜렉션의 변경 Array, set, Dictionary를 변수(var)에 할당하면 이 콜렉션은 변경 가능하고 상수(let)에 할당하면 변경 불가능 합니다. 배열(Array) 배열의 축약형 문법 배열 타입은 Array로 적을 수 있는데 축약형으로 [Element]형태로 사용할 수도 있습니다. 빈 배열의 생성 아래와 같이 Int형 빈 배열을 생성할 수 있습니다. var someInts = [Int]() someInts.append(3) // 배열에 3을 추가 했습니다. someInts = [] // 배열을 비웠습니다. 배열의 아이템 타입은 그대로 Int로 유지 됩니다. 기본값으로 빈 배열 생성 repeating..

iOS/Swift 2023.04.19

TableView, CollectionView Cell클릭 흔적 없애는 방법

애플 공식문서에 지원하는 메서드를 활용해 보자 설명은 "지정된 인덱스에서 항목을 선택 취소합니다".라고 되어 있다. 실제 적용해 보자. func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { } 함수에서 아래 코드 추가해준다 self.collectionView.deselectItem(at: indexPath, animated: true) 이렇게 되면 다시 돌아와있을때 선택한 셀에 선택한 효과가 없어져 있다.

Refresh Control 위치, Navigation LargeTitle

Refresh Control 위치, Navigation LargeTitle 연락처 앱을 만들던 중 Refresh 기능을 넣었을 때, 개인적으로 LargeTitle 넣었을때 ActivityView의 위치가 어색해 보여서 수정할 수 있는지 찾아 보았다. 그런데 Navigation Title 스타일에 따라 ActivityView의 위치가 다르게 표시 되었고, 커스텀 방법은 찾지 못했다. 공식문서에서 자료를 찾으려고 해도 문서로 되어 있는건 결국 찾지 못했다. 그 대신 아이폰 기본 앱 중 메일, 연락처을 벤처마킹 해보니 아래의 사진과 동일해서, 내부적으로 설정되어 있는 따른 이유가 있을 것 같다. Nomal Large

Swift) 코드로 UITableView 구현하기

Swift) 코드로 UITableView 구현하기 코드로 UITableView를 구현해 봅시다. TableView란?? A view that presents data using rows in a single column. -> "단일 열의 행을 사용하여 데이터를 표시하는 보기 입니다" 라고 공식문서에서 소개해주네요 구현된 TableView를 보자면 아래처럼 각각의 표처럼 View가 되어 있고 하나의 칸마다 데이터가 들어간 것을 볼 수 있네요. 또한 관련 행을 섹션으로 그룹화하여 콘텐츠를 관리하거나 탐색할 수 있습니다. 구성 UITableView는 테이블의 기본 모양을 관리합니다. 하지만 앱은 실제 컨텐츠를 표시하는 각각의 Cell(UITableViewCell)을 제공합니다. 아래의 셀 구성은 아래 처럼 ..

iOS/Swift 2023.02.04

.gitignore 활용

https://www.toptal.com/developers/gitignore 1. 위의 사이트가서 관리하고 싶은 키워드를 기입한다. 2. 만약 이미 작업한 프로젝트를 푸시를 했고, 이후에 적용을 하고 싶다면? 이미 푸시를 했다면, 깃에서 해당 파일들을 트래킹 하고 있기 때문에 이를 제거해야 한다. 과정은 - 먼저 위의 과정과 똑같이 .gitignore를 작성하고 저장한다. - 그리고 레포에 푸시를 하기 전에 한 가지 코드를 추가해서 입력하면 된다. - git rm -r --cached . (-> 캐시에 등록된 트래킹 중인 파일들을 삭제하는 명령어) 이후에는 마찬가지로 - git add . - git commit -m 'commit message' - git push origin main