요즘 Camera 작업을 하면서 Layer와 View가 많이 보여 둘의 차이점이 궁금해졌다. 검색을 해보다가 간단하게 잘 정리 되어있는곳을 참고하여 글을 작성해보려고 한다. UIView, CALayer 무슨차이? Layer는 low-level의 인터페이스를 제공합니다. 즉, UIView에서 조절할 수 없는 부분을 Layer를 통해 할 수 있다는거죠. 아래 그림을 보면 이해가 좀더 잘될 겁니다. UIView View는 더 복잡한 hierarchy (뷰계층)을 갖고 있습니다. 레이아웃을 배치하기 위해 오토레이아웃(AutoLayout)을 사용합니다. UIView 작업은 main Thread에서 발생하며, CPU를 사용합니다. CALayer UIView 보다 hierarchy (뷰계층)가 간단하며, 화면에 그리..
https://school.programmers.co.kr/learn/courses/30/lessons/120894 문제 사진 내 풀이 import Foundation // 1 var dic = ["zero" : "0", "one": "1", "two": "2", "three": "3", "four": "4", "five": "5", "six": "6", "seven": "7", "eight": "8", "nine": "9"] func solution(_ numbers:String) -> Int { // 2 var result = numbers // 3 for (key, value) in dic { result = String(result.replacingOccurrences(of: key, with: ..
Shifting time publisher에서 방출하는 이벤트를 지연시키는 연산자를 알아보겠습니다. delay(for:tolerance:scheduler:options) upstream 에서 값을 방출할 때마다 잠시 동안 지연시켜 다음 지정한 스케줄러에서 방출합니다. import Combine import SwiftUI import PlaygroundSupport // 1 let valuesPerSecond = 1.0 let delayInSeconds = 1.5 // 2 let sourcePublisher = PassthroughSubject() // 3 let delayedPublisher = sourcePublisher.delay(for: .seconds(delayInSeconds), schedule..
https://school.programmers.co.kr/learn/courses/30/lessons/120912 문제 사진 내 풀이 import Foundation func solution(_ array:[Int]) -> Int { return array.map { String($0) }.joined(separator: "").filter { $0 == "7" }.count } 1. array 요소들을 String으로 변환 2. 변환된 String을 하나의 String으로 합침 (joined) 3. String으로 변환된 결과값들 중 "7"이 들어간요소들의 갯수만 걸러냄 (filter) 다른사람의 풀이 import Foundation func solution(_ array:[Int]) -> Int {..
https://school.programmers.co.kr/learn/courses/30/lessons/120892 문제 사진 내 풀이 import Foundation func solution(_ cipher:String, _ code:Int) -> String { return (1...cipher.count) // 1 .filter { $0.isMultiple(of: code) } // 2 .map { String(Array(cipher)[$0 - 1]) } // 3 .joined(separator: "") } solution("pfqallllabwaoclk", 2) 1. isMultiple(of:) 메서드로 매개변수 code 만큼의 배수들만 걸러냅니다. print [2, 4, 6, 8, 10, 12,..
https://school.programmers.co.kr/learn/courses/30/lessons/120887 문제 사진 내 풀이 import Foundation func solution(_ i:Int, _ j:Int, _ k:Int) -> Int { return Array(i...j).flatMap { String($0).compactMap { Int(String($0)) } }.filter { $0 == k }.count } solution(1, 13, 1) 1. i ~ j 까지의 숫자를 배열로 만든다. 2. 그 사이 요소들중 10의자리 수 이상인 요소들을 분리 시킨다. flatMap { String($0).compactMap { Int(String($0)) } } 예) 32 → 3, 2 / 1..
https://school.programmers.co.kr/learn/courses/30/lessons/12917 문제 사진 내 풀이 func solution(_ s:String) -> String { return String(s.sorted(by: >)) } solution("Zbcdefg") // gfedcbZ 처음 생각했던 방법은 filter() 메서드를 사용하여 isLowercase, isUppercase 로 소문자, 대문자를 걸러서 sorted() 를 사용해 마지막으로 합칠 생각이었으나... sorted(by: >) 내림차순으로 정리하면 소문자(z ~ a) → 대문자 (Z ~ A) 순으로 알아서 정리를 해줬다.. 나름 머리를 굴렸지만 메서드 하나로 해결되는거에 신기하면서도 허탈했다 🌝
오늘은 이어서 Combining 연산자에 대해 공부해 보겠습니다. Prepending upstream에서 방출한 값 앞에 추가해서 보내는 용도로 사용합니다. prepend(Output) publisher에서 방출 되는 이벤트 이전에 값을 넣어줄 때 사용합니다. var subscriptions = Set() example(of: "prepend(output)") { let publisher = [3, 4].publisher publisher .prepend(1, 2) .sink(receiveValue: { print($0) }) .store(in: &subscriptions) } /* ——— Example of: prepend(output) ——— 1 2 3 4 */ 아래처럼 음수 를 추가해도 순서대로 ..
https://school.programmers.co.kr/learn/courses/30/lessons/120886 문제 사진 내 풀이 첫풀이 오답 func solution(_ before:String, _ after:String) -> Int { return String(before.reversed()) == after ? 1 : 0 } solution("allpe", "apple") // 0 처음 생각했던건 순서를 바꾸면 된다해서 '뒤집는'거에만 집중했었다. 테스트결과는 주루룩 실패.. 그래서 하나하나 비교해야하는데 정렬을 해야할거라 생각했고 적용해본 알고리즘은 아래와 같다. func solution(_ before:String, _ after:String) -> Int { return before...
https://school.programmers.co.kr/learn/courses/30/lessons/12935 문제 사진 내 풀이 func solution(_ arr:[Int]) -> [Int] { guard arr.count > 1 else { return [-1] } guard let index = arr.firstIndex(of: arr.min()!) else { return [-1] } var result: [Int] = arr result.remove(at: index) return result } 비교할게 없을때 [-1] return 최소값 구하기 min() 메서드 제일 작은값의 인덱스 구하기 구한 인덱스 삭제 remove(at:) 다른사람의 풀이 func solution(_ arr:[In..
- Total
- Today
- Yesterday
- Combine: Asynchronous Programming with Swift
- iOS error
- Swift joined()
- swift reduce
- Swift init
- Swift 알고리즘
- swift property
- Swift ModernRIBs
- Swift Error Handling
- CS 네트워크
- Swift
- ios
- Swift 내림차순
- Swift final
- RIBs tutorial
- Swift 프로퍼티
- Swift Leetcode
- 원티드 프리온보딩
- swift programmers
- swift (programmers)
- Class
- Swift joined
- 2023년 회고
- RTCCameraVideoCapturer
- Swift RIBs
- swift protocol
- Swift 프로그래머스
- removeLast()
- Swift inout
- swift 고차함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |