일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SWIFT
- 스위프트UI
- ARC
- Algorithm
- objc
- string
- objective-c
- Animation
- 책
- 문자열
- 알고리즘
- 스위프트
- wwdc
- 애니메이션
- 책 후기
- ReactiveX
- iOS SwiftUI
- 머신러닝
- leetcode
- rxswift
- stanford SwiftUI
- Xcode
- ios
- 딥러닝
- RX
- swift5
- 독서
- Deep learning
- swiftUI
- 책 추천
- Today
- Total
목록개발 (140)
THIS IS ELLIE
클래스 싱글톤과 구조체 싱글톤을 차이점을 알아보겠습니다. 비교를 하기 위해 먼저 클래스 싱글톤을 만들어줍니다. 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..
시뮬레이터에 있는 앨범에 내 이미지를 넣고 싶다면 시뮬레이터로 앨범을 열어주고 바탕화면에 있는 이미지를 드래그 앤 드롭해주면 됩니다. 이미지뿐 아니라 동영상도 가능합니다.
이전에 커스텀한 버튼을 만든 적이 있었는데요 저는 제약조건을 수정해서 확장시켰는데 깃을 보다가 Ale Patron이 분의 방식이 좋아 보여서 기록해놓으려 합니다. 기존 코드에서 맘대로 조금 수정을 했습니다. 버튼이 정중앙에 배치되어있는데 오른쪽 하단으로 옮겼고 색상을 변경했습니다. 버튼의 텍스트와 함수명을 변경했습니다. 버튼 사이즈 상수는 ButtonPanelView에서만 사용되고 있어 클래스 내부로 들고 왔습니다. (내부로 들고 오면서 접근 제어자 fileprivate에서 private로 변경했습니다) 프로토콜은 클래스만 사용할 수 있도록 class로 수정했습니다. 버튼에 쉐도우 레이어는 제거했습니다. 그럼 다시 시작. class ButtonPanelView: UIView { private let bu..
Property Wrappers @something은 다 프로퍼티 래퍼이다. 각 Property Wrapper는 구조체이며 이는 'template'동작을 캡슐화한다. 예를 들어 @State는 변수가 힙에 살도록 하고 @Published는 변경이 있을 때 publish 하도록 하고 @ObservedObject는 published 변경이 감지되면 뷰를 다시 그리도록 하고 Property Wrapper는 이 구조체들을 생성하고 사용하기 쉽게 해준다. Property Wrapper 안 쓰면 아래처럼 사용해야 한다. Property Wrapper를 사용하기 위해 구조체를 만들고 그에 맞게 구현해줘야 한다. 또한 Property Wrapper안에 또 다른 변수가 존재하는데 projectedValue이다. 이 pro..
앱을 유지할 수 있는 여러 가지 방법 - FileManager - CoreData - CloudKit - UserDefault 오늘 사용할 유저디폴트를 살펴본다. 유저 디폴트를 사용하기 위해서 인스턴스가 필요하다. let defualts = UserDefaults.standard 데이터 저장하는 방법 defaults.set(object, forKey: “SomeKey”) 여기서 object는 property list여야 한다. (Bool, Int, Double, String 등) 데이터 추출하는 방법 let i: Int = defaults.integer(forKey: “MyInteger”) let d: Data? = defaults.data(forKey: “MyData”) let a = array(for..
Color vs UIColor - Color ShapeStyle에 Color를 사용할 수 있다. ex) .foregroundColor(Color.green) View에 Color를 사용할 수 있다. ex) Color.white 하지만 API는 제한적이다. - UIColor 시스템 관련 색상을 포함해 더 많은 색이 있다. 원하는 UIColor가 있으면 Color(uiColor:)를 사용하면 된다. Image vs UIImage - Image 주로 View역할을 한다. (jpeg또는 gif등)을 포함하는 타입의 변수는 아니다.(그건 UIImage의 역할) Asset에 있는 이미지는 Image(name: String)으로 접근할 수 있다. 시스템 이미지를 사용하기 위해서는 Image(systenName:)으로..