AVPlayer를 사용해볼 기회가 생겨서 문서를 정리해보려 합니다. 예전에 비디오 플레이어 프로젝트에 참여했을 때 썼던 기억이 있는데 1년 더 된 것 같네요. 공식문서에 설명된 내용을 정리해보겠습니다. AVPlayer는 플레이어의 전송 동작을 제어하는 인터페이스를 제공하는 객체입니다. AVPlayer는 재생과 미디어 자산(asset)의 타이밍을 관리하는 데 사용되는 컨트롤러 객체입니다. AVPlayer를 사용하여 AVPlayerQuickTime영화 및 MP3 오디오 파일과 같은 로컬 및 원격 파일 기반 미디어와 HTTP 라이브 스트리밍(HLS)을 사용하여 제공되는 시청각 미디어도 재생할 수 있습니다. AVPlayer는 한 번에 하나의 미디어 자산을 재생하기 위한 것입니다. replaceCurrentIte..
아래 설명과 같이 AVPlayer는 상태가 계속해서 변경되는 동적 객체입니다. 플레이어의 상태을 관찰할 수 방법이 두 가지 방법이 존재합니다. (AVPlayer 애플 공식문서 링크에서 확인 가능합니다. developer.apple.com/documentation/avfoundation/avplayer) 그중에서도 일반 상태 관찰을 위해 옵저버를 통해서 상태 변화를 받아보도록 했습니다. 상태 변화를 받기 위해서는 observeValue(forKeyPath:of:change:context:) 메서드를 구현해야 합니다. override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any..
오랜만에 알고리즘 포스팅을 해보려 합니다. 오늘은 Leetcode 94번 문제를 풀어볼 거예요. 제목은 Binary Tree Inorder Traversal이고 64.1%의 성공률을 가지고 중간 난이도입니다. 이진트리 중위 순회하는 문제입니다. 문제를 풀기 전에 이진 트리 순회 개념부터 살펴봅시다. 트리 순회는 트리 구조에서 각각의 노드를 정확히 한 번만 체계적인 방법으로 방문하는 과정을 말합니다. 연결 리스트와 1차원 배열과 같은 선형 자료 구조에서는 한 가지의 논리적인 순회 방법이 존재하지만, 트리 구조의 순회에는 많은 방법이 존재합니다. 전위 순회 (preorder) 1. 노드를 방문합니다. 2. 왼쪽 서브 트리를 전위 순회합니다. 3. 오른쪽 서브 트리를 전위 순회합니다. 전위 순회는 깊이 우선 ..
9월 15일 애플 이벤트 새벽에 봐서 비몽사몽으로 봐서 다시 정주행 시작. 이번 애플 이벤트에서 새로운 아이폰에 대한 언급은 없었고 애플워치와 아이패드만 소개되었다. 오늘은 애플 워치와 아이패드에 대해서 포커스를 맞춰서 얘기하겠다. 애플워치 애플 워치 활용에 더 많은 사람들의 사례를 보여준다. (이때 기사 뜬 거 보고 신기해서 적어봄) 애플워치로 텍사스에 사는 레이는 목숨을 구함. 복부에 통증이 있었지만 대수롭지 않게 여겼고 애플워치가 고 심박수 문제를 알렸고 병원에 갔더니 패혈성 쇼크 진단을 받게 되었다. 레이는 바로 치료받을 수 있었다. 또 스페인에 사는 엔리케 눈이 안 보여서 애플 워치를 통해 시간과 약속을 알려주고 택시를 잡고 건강유지를 한다. 애플워치는 엔리케의 일상의 일부가 됐다. watchO..
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을 반환합니..
오늘은 dropFirst(_:)와 removeFirst(_:)를 정리해보도록 하겠습니다. 사실 알고리즘 문제 풀다가... 스위프트는 왜 비슷한 메서드들을 정의해놨는지 궁금했습니다. 당연히 차이가 있으니깐 비슷한 것들을 따로 생성했겠죠...ㅎㅎ? (나: 제발 좀 공부해라) 알고리즘 문제를 보고 아! 이문제는 재귀 쓰자 마음먹었고... 재귀를 사용했어요. 그리고 재귀는 언제 리턴될지가 중요하잖아요. 저는 빈 배열이 될 때를 제약 조건으로 두고 재귀를 돌렸습니다. 즉 빈 배열이 나올 때까지 재귀로 들어가고 파라미터로는 배열의 첫 번째 요소를 제거한 나머지 배열을 계속 전달했어요. 여기서부터 사건의 발달 ... 배열의 첫 번째 요소를 제거한 나머지 배열을 전달하는 방법에 대해서 생각하다가 두 가지가 떠올랐어요...
NSLineBreakMode는 총 6가지 케이스가 존재합니다. 오늘은 NSLineBreakMode에서 3가지 byTruncatingHead, byTruncatingTail, byTruncatingMiddle에 대해서 살펴보겠습니다. 그리고 각각이 어떻게 다른지도 비교해보겠습니다. (byWordWrapping, byCharWrapping은 따로 정리하는 걸로) NSLineBreakMode는 컨테이너에 줄이 너무 길어지면 상황에 따라 어떻게 처리할지를 구분해놓은 열거형입니다. Int를 Raw Values로 설정했고 각각의 케이스에 정수를 부여했습니다. 여기서 우리가 볼 것은 3,4,5번입니다. 저는 ...표시가 어디에 갈 것인지로 byTruncatingHead, byTruncatingTail, byTrunc..
- Total
- Today
- Yesterday
- 스위프트
- iOS SwiftUI
- SWIFT
- 머신러닝
- 딥러닝
- 책 추천
- objc
- wwdc
- 독서
- string
- RX
- Algorithm
- rxswift
- objective-c
- ARC
- Animation
- 책
- swiftUI
- 책 후기
- ios
- swift5
- leetcode
- 알고리즘
- ReactiveX
- stanford SwiftUI
- 문자열
- 스위프트UI
- Deep learning
- Xcode
- 애니메이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |