 Swift Extensions
        
        
          Swift Extensions
          안녕하세요 : - )오늘은 제가 자주 사용하는 3가지 Extensions들을 소개하려 합니다 isNotEmpty혹쉬배열, 집합, 딕셔너리의 collection이 비었는지 확인하려면 어떻게 하시나요?isEmpty를 호출해서 사용하시나요????(count == 0은 아니라고 하셈 ,, 이유는 여기에 https://hyerios.tistory.com/27) 그렇다면 비지 않았는지 확인은 어떻게 확인하시나요?!isEmpty 이렇게 하시나요???(count != 0도 아니라고 하셈 ,,) extension Collection { var isNotEmpty: Bool { isEmpty == false }} 저는 collection이 비지 않았을 때를 확인하기 위해서위와 같이 Collectio..
 클래스 싱글톤 vs 구조체 싱글톤
        
        
          클래스 싱글톤 vs 구조체 싱글톤
          클래스 싱글톤과 구조체 싱글톤을 차이점을 알아보겠습니다. 비교를 하기 위해 먼저 클래스 싱글톤을 만들어줍니다. 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..
 스위프트 Combination
        
        
          스위프트 Combination
          조합은 집합에서 서로 다른 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..
 스위프트 Intersperse함수
        
        
          스위프트 Intersperse함수
          스위프트 업데이트 내용을 보다가 좋은 메서드가 있어서 정리해보려 합니다. 예전에 알고리즘 문제를 풀 때, 이런 함수 있으면 좋겠다고 생각했었는데 딱 맞는 함수가 나왔더라구요. 각 배열 사이에 - 를 넣어줘야 한다고 가정해봅시다. 저 같은 경우 루프를 돌면서 각 원소 뒤에 -를 붙여주고 if조건문을 두어 맨 마지막 원소면 -를 붙여주지 않도록 작성할 것 같네요. 또 다른 간단한 방법으로 .joined(seperator: "-")를 사용할 것 같아요. 위 예시에서 사용할 수 있는 또 다른 함수 Interperse함수를 살펴봅시다. Intersperse는 시퀀스의 각 원소 사이에 주어진 값을 배치해줍니다. 아래와 같이 시퀀스 extension에 코드가 추가되어있습니다. extension Sequence { f..
 스위프트 mutating 키워드
        
        
          스위프트 mutating 키워드
          스위프트에서 클래스는 레퍼런스 타입이고 구조체와 열거형은 값 타입입니다. 값 타입의 속성은 기본적으로 인스턴스 메서드 내에서 수정할 수 없습니다. 값 타입의 속성을 수정하려면 인스턴스 메서드에서 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
- Animation
- Xcode
- 머신러닝
- foundationmodels
- wwdc
- 스위프트
- ios
- 독서
- Algorithm
- 딥러닝
- string
- swift5
- ARC
- rxswift
- 스위프트UI
- SWIFT
- iOS SwiftUI
- 알고리즘
- 애니메이션
- objective-c
- 문자열
- 책
- 책 후기
- RX
- Deep learning
- 책 추천
- objc
- leetcode
- ReactiveX
- swiftUI
| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 |