분류 전체보기 87

WWDC16) Understanding Swift Performance - 2

프로토콜 유형과 제네릭 코드 구현을 탐색 프로토콜 유형 변수가 저장되고 복사되며 메소드 디스패치가 작동하는 방식을 알아 볼 겁니다. 여기 Drawable 추상 기본 클래스 대신, draw 메소드를 선언하는 protocol drawable이 있습니다. 또한 값 타입인 구조체 Point와 Line이 프로토콜을 준수하고 있습니다. 이제 값타입도 다형성을 가지게 되었습니다. 우리는 drawable프로토콜 타입의 배열에 Point와 Line 타입의 값을 모두 저장할 수 잇습니다. 그러나 이전과 비교했을 때, 다른 점이 있습니다. 참고로 값 유형 구조체인 Line과 point구조체는 Kyle이 방금 보여준 V-Table 디스패치를 수행하는데 필요한 공통 상속 관계를 공유하지 않습니다. 그렇다면 이 메서드에 대한 디..

iOS/WWDC 2023.05.02

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

iOS 앱 개인정보 처리방침

'MapleGuide’는 개인정보보호법에 따라 이용자들의 개인정보 보호 및 권익을 보호하고자 다음과 같은 처리방침을 두고 있습니다. 당사는 개인정보처리방침을 개정하는 경우 앱 화면 및 웹사이트 공지사항을 통하여 공지할 것입니다. ​ 1.개인정보의 처리 목적 : 당사에서 개인정보를 별도로 저장하거나 이용하지 않습니다. ​ 개인정보 파일 현황 당사는 별도의 개인정보 파일을 사용하지 않으며 저장하지도 않습니다. 당사는 쿠키를 저장하지 않으며 이용하지 않습니다. 이용자가 이에 대해 의문이 있다면 해당 서비스(애플 및, 각 광고 미디어)로 직접 연락해야 합니다. ​ 개인정보의 처리 및 보유기간 당사는 개인정보를 직접적으로 저장하거나 보유하지 않습니다. 따라서 당사는 이용자의 개인정보를 처리하는 내용도 보유기간도 ..

카테고리 없음 2023.04.24

콜렉션 타입(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