안녕하세요 : - )오늘은 제가 자주 사용하는 3가지 Extensions들을 소개하려 합니다 isNotEmpty혹쉬배열, 집합, 딕셔너리의 collection이 비었는지 확인하려면 어떻게 하시나요?isEmpty를 호출해서 사용하시나요????(count == 0은 아니라고 하셈 ,, 이유는 여기에 https://hyerios.tistory.com/27) 그렇다면 비지 않았는지 확인은 어떻게 확인하시나요?!isEmpty 이렇게 하시나요???(count != 0도 아니라고 하셈 ,,) extension Collection { var isNotEmpty: Bool { isEmpty == false }} 저는 collection이 비지 않았을 때를 확인하기 위해서위와 같이 Collectio..
클래스 싱글톤과 구조체 싱글톤을 차이점을 알아보겠습니다. 비교를 하기 위해 먼저 클래스 싱글톤을 만들어줍니다. private init()을 해준 이유는 https://hyerios.tistory.com/23 해당 포스팅에서도 언급했지만 다른 곳에서 또 다른 인스턴스를 생성하지 못하도록 하기 위함입니다. (싱글톤 특성) 그리고 value변수를 생성하고 0으로 초기화해줍니다. currentValue함수를 생성해 현재 value값을 출력해주도록 합니다. class ClassSingleton { static let shared = ClassSingleton() private init() {} var value = 0 func currentValue() { print("class Singleton: \(value..
조합은 집합에서 서로 다른 n개의 원소 중에서 순서에 상관없이 r개를 선택하는 것입니다. 이전에도 정리를 한 번 한 적이 있지만(https://hyerios.tistory.com/172) 조합은 순서에 상관없이 뽑기만 하면 됩니다. combinations(ofCount: ) 메서드를 사용하면은 컬렉션 요소의 모든 조합의 시퀀스를 반환하며, 각 조합은 원래 컬렉션의 순서대로 표시됩니다. combinations가 만들어지기 전에는 대부분 아래와 같이 구현했습니다. //5개 중에 2개를 뽑는 모든 경우의 수 func combos(elements: ArraySlice, k: Int) -> [[T]] { if k == 0 { return [[]] } guard let first = elements.first el..
스위프트 업데이트 내용을 보다가 좋은 메서드가 있어서 정리해보려 합니다. 예전에 알고리즘 문제를 풀 때, 이런 함수 있으면 좋겠다고 생각했었는데 딱 맞는 함수가 나왔더라구요. 각 배열 사이에 - 를 넣어줘야 한다고 가정해봅시다. 저 같은 경우 루프를 돌면서 각 원소 뒤에 -를 붙여주고 if조건문을 두어 맨 마지막 원소면 -를 붙여주지 않도록 작성할 것 같네요. 또 다른 간단한 방법으로 .joined(seperator: "-")를 사용할 것 같아요. 위 예시에서 사용할 수 있는 또 다른 함수 Interperse함수를 살펴봅시다. Intersperse는 시퀀스의 각 원소 사이에 주어진 값을 배치해줍니다. 아래와 같이 시퀀스 extension에 코드가 추가되어있습니다. extension Sequence { f..
스위프트에서 클래스는 레퍼런스 타입이고 구조체와 열거형은 값 타입입니다. 값 타입의 속성은 기본적으로 인스턴스 메서드 내에서 수정할 수 없습니다. 값 타입의 속성을 수정하려면 인스턴스 메서드에서 mutating 키워드를 사용해야 합니다. mutating을 붙이면 self 프로퍼티에 새로운 인스턴스를 할당할 수 있습니다. struct Point { var x = 0.0, y = 0.0 mutating func moveBy(x deltaX: Double, y deltaY: Double) { self = Point(x: x + deltaX, y: y + deltaY) } } mutating moveBy(x:y:)메소드는 x, y값이 타겟 위치로 설정된 새 구조체를 만듭니다. 또 다른 예제 enum TriSta..
어떤 분이 초기화되지 않은 버퍼에 액세스 할 수 있는 배열 초기화 프로그램을 만든 포스트를 보다가 작성하게 되었어요. forums.swift.org/t/array-initializer-with-access-to-uninitialized-buffer/13689 스위프트에서 배열 크기 늘리기 // Grwoing the size an array 스위프트에서 배열은 내용을 보관하기 위해 특정 사이즈만큼의 메모리를 예약해둡니다. 배열에 element를 추가하고 해당 배열이 예약된 용량을 초과하기 시작하면, 배열은 더 큰 메모리 영역을 할당하고 해당 element를 새 저장 공간에 복사합니다. 이때 새 저장소의 크기는 이전 저장소 크기의 배수입니다. 이렇게 배수로 증가시키는 것은 상수 시간으로 element가 추가..
leetcode.com/problems/string-to-integer-atoi 위 알고리즘 문제를 풀다가 스위프트 오버플로우 연산에 대해 궁금해졌습니다. 범위 넘어가는 작업을 처리하다가 스위프트에 오버플로우 연산에 대해 궁금해졌고 공부하고 정리해야겠다 생각이 들었습니다. *문제에서 제약 조건 Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. If the numerical value is out of the range of representable values, INT_MAX (231 − 1) or INT_MIN (−231..
스위프트에서 비트 연산자를 사용하면 데이터 구조 내에서 각각의 원시 데이터 비트를 조작할 수 있습니다. 그래픽 프로그래밍 및 장치 드라이버 생성과 같은 low-level 프로그래밍에서 더 자주 사용됩니다. 비트 연산자는 인코딩과 디코딩 같은 외부 소스의 원시 데이터와 작업할 때도 유용합니다. NOT 비트 연산자 ~ NOT 비트 연산자는 모든 비트를 반전시킵니다. let initialBits: UInt8 = 0b00001111 let invertedBits = ~initialBits // equals 11110000 위 예제를 살펴보면 0은 1이 되고 1은 0이 되는 것을 확인할 수 있습니다. AND 비트 연산자 & AND 비트 연산자는 두 수의 비트를 결합합니다. 비트가 1로 동일한 경우에 1을 반환합니..
- Total
- Today
- Yesterday
- swiftUI
- leetcode
- 독서
- Deep learning
- ARC
- 알고리즘
- 애니메이션
- ReactiveX
- SWIFT
- Xcode
- wwdc
- rxswift
- string
- iOS SwiftUI
- 책 추천
- objective-c
- 딥러닝
- 스위프트UI
- Animation
- objc
- stanford SwiftUI
- Algorithm
- 문자열
- RX
- 책 후기
- ios
- swift5
- 책
- 스위프트
- 머신러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |