
배열에서 중복된 Element를 제거하는 방법에는 여러 방법이 있겠지만 쉬운 방법은 딕셔너리를 활용하는 것 입니다. 간단히 배열을 extension 시켜줍니다. 저기서 주목해줄 건 updateValue가 리턴을 한다는 것입니다. 키가 이미 있으면 OriginalValue를 리턴하고, 키가 없으면 nil을 리턴한다. 예를 들어보겠습니다. array배열에는 1, 4, 4, 4, 5, 1, 3로 1과 4가 중복되네요. 원하는 결과물은 1,4,5,3 즉 중복되는 요소는 제거하고 유니크한 값만 뽑아내고 싶습니다. 먼저 딕셔너리(dict)를 만들어 key와 value를 업데이트해줍니다. key는 각각의 요소 1, 4, 4, 4, 5, 1, 3 가 되겠네요. 앞서 말한 대로 키가 이미 있으면 OriginalValue..

raywenderlich YOUTUBE영상을 보다가 신기한 게 있어서 정리하려 합니다. (처음 들어본 팬텀 타입 ,,하하) 여기 있는 loopup 딕셔너리는 주와 수도가 연결되어 있습니다. 하지만 직관적으로 눈에 들어오진 않습니다. 이것을 개선하기 위해선 typealias를 사용할 수 있습니다. String타입 대신에 State와 Capital로 변경하면 지금 보단 직관적입니다. 조금 더 직관적으로 보이죠 ,, 😦 이렇게 하면 loopup딕셔너리는 주와 수도로 이뤄진 딕셔너리로 이전보다 파악하기 쉬워집니다. 자 그럼 주와 수도를 출력해보는 test함수를 만들고 출력해봅시다. 이렇게 test 함수를 호출했는데 출력은 The capital of Juneau is Alaska라고 출력됩니다. (주노의 주는 알..

이미지뷰의 ContentMode에 대해서 살펴보겠습니다. 이미지뷰의 ContentMode는 enum으로 정의되어있습니다. 저는 여기서 위에 3개만 자주 사용해서 밑에 것은 사용하지 않아 잘 몰랐는데 한번 차이점을 파악하려고 합니다. 위에서부터 차례대로 차이점을 살펴봅시다. (UIImageView배경은 검은색으로 설정했습니다.) (파란색 프레임은 UIImageView의 프레임입니다.) scaleToFill 이미지의 높이와 너비는 UIImageView의 크기와 일치하도록 늘어납니다. AspectFit 이미지의 가장 긴쪽(높이 또는 너비)은 뷰와 일치하도록 늘어납니다. 이렇게 하면 전체 이미지를 표시하면서 높이나 너비를 왜곡시키지 않으면서 가능한 한 이미지를 크게 만듭니다. AspectFill 이미지의 가장 ..

https://hyerios.tistory.com/33 앞에서 말한 메모리 누수의 원인인 순환 참조는 어떻게 해결할 수 있을까요 이를 해결하기 위한 방법은 두가지가 존재합니다. - weak reference 약한 참조 - unowned reference 미소유 참조 즉 강한 참조로 하지 않고도 약한 참조와 미소유 참조로도 서로를 참조할 수 있습니다. 그럼 여기서 드는 궁금증 Q. weak, unowed reference의 차이점은 뭐야! 약한 참조는 옵셔널이며 미소유 참조는 옵셔널이 아닙니다. Q. weak, unowed reference는 언제 사용할까요! 약한 참조는 다른 인스턴스의 수명이 짧을 때 사용합니다. 미소유 참조는 다른 인스턴스의 수명이 같거나 긴 경우 사용합니다. weak referenc..

스위프트의 ARC는 앱의 메모리 사용을 추적하고 관리합니다. https://hyerios.tistory.com/32에서 ARC란 무엇인지 알아보았습니다. ARC는 Person인스턴스에 대한 참조 카운트를 추적하고 Person이 더 이상 필요하지 않으면(참조 카운트가 0이 되면) 인스턴스 할당을 해제했습니다. 자동으로 관리해줌에도 불구하고 신경 써줘야 하는 게 있다고 했는데 그것은 메모리 누수입니다. 그럼 순환참조는 어떤 상황에 발생될까요 .ㅇ. 클래스 인스턴스 간 순환 참조 두 개의 클래스의 인스턴스가 서로 강한 참조로 각 인스턴스가 다른 인스턴스를 참조하는 경우 순환 참조(strong reference cycle)가 생깁니다. 예를 들어 class Person { let name: String init..

ARC란 스위프트의 ARC(Automatic Reference Counting)는 앱의 메모리 사용을 추적하고 관리합니다. 그렇기 때문에 따로 메모리를 어떻게 관리해야 하는지 생각할 필요가 없습니다. ARC는 클래스 인스턴스가 더 이상 필요하지 않을 때 클래스 인스턴스가 사용하는 메모리를 자동으로 비우기 때문입니다. (하지만 몇 가지 부분에서 신경 써줘야 하는 게 있음 ㅎㅋㅎㅋ) 레퍼런스 카운팅은 오직 클래스의 인스턴스에만 적용됩니다. 말 그대로 reference counting 참조 카운팅 = 레퍼런스 카운팅은 참조 타입만 해당합니다. 구조체/struct와 열거형/enum은 값 타입이므로 참조값을 저장하거나 전달하지 않아 이에 해당하지 않습니다. ARC 동작 방식 클래스의 새 인스턴스를 만들 때마다 A..

코딜리티의 데모 테스트의 문제는 이렇습니다. 저는 언어를 Swift4로 선택했습니다. 하하. 먼저 문제 해석 :) N개의 정수 중 A배열이 주어지면 A에서 발생하지 않은 가장 작은 양의 정수를 리턴하세요. 예를 들어 A= [1,3,6,4,1,2]이면 함수는 5를 리턴해야 합니다. A = [1,2,3]이면 함수는 4를 리턴해야 합니다. A = [-1,-3]이면 함수는 1을 리턴해야 합니다. 블라블라 효율적인 알고리즘을 작성해주라. N은 [1.. 100,000] 범위의 정수이며 A의 각 요소는 [-1,000,000.. 1,000,000]입니다. 일단 데모 테스트를 풀어보자. 핵심은 주어진 A배열에서 발생하지 않은 가장 작은 양의 정수를 리턴해야 합니다. 그냥 for문으로 1부터 A의 카운트만큼 돌려서 배열에..

Substring은 String의 일부를 말합니다. 예를 들어 Subscript를 사용하거나 prefix(_ :) 메소드를 사용해서 String에서 Substring을 가져오는 경우 스위프트에서는 String처럼 사용할 수 있습니다. 둘 다 String Protocol을 따르기 때문입니다. 하지만 String과 다르게 Substring은 작업을 수행하는 짧은 시간 동안 사용해야 합니다. 즉 Substring은 장기로 사용하는 용도가 아닙니다. 위와 같이 greeting은 문자열 Hello, world! 를 가집니다. beginning에서는 greeting의 [..
- Total
- Today
- Yesterday
- 머신러닝
- 책
- iOS SwiftUI
- 독서
- SWIFT
- Animation
- stanford SwiftUI
- 책 후기
- 스위프트
- swift5
- 스위프트UI
- Xcode
- ARC
- rxswift
- leetcode
- objc
- ios
- RX
- 애니메이션
- 딥러닝
- Deep learning
- swiftUI
- string
- 책 추천
- ReactiveX
- 알고리즘
- Algorithm
- 문자열
- wwdc
- objective-c
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |