일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클린 코드
- 스위프트
- combine
- Human interface guide
- Clean Code
- 리팩토링
- uiscrollview
- swift documentation
- ribs
- collectionview
- clean architecture
- Protocol
- Xcode
- rxswift
- tableView
- swiftUI
- MVVM
- UICollectionView
- UITextView
- Observable
- 리펙터링
- SWIFT
- RxCocoa
- uitableview
- ios
- Refactoring
- map
- 애니메이션
- 리펙토링
- HIG
- Today
- Total
목록iOS 기본 (swift) (149)
김종권의 iOS 앱 개발 알아가기
allSatisfy 연산자 Collection의 모든 요소가 특정 조건을 만족시키는지 알고 싶은 경우 사용 ex) 배열을 순회하면서 원소들이 특정 조건을 모두 만족하는지 확인할 때 사용 Array, Dictionary, Set 타입에 사용 let arr = ["abcdef", "12345", "문자열"] let bool = arr.allSatisfy { $0.count > 2 } print(bool) // true let dict = ["1": 1, "2": 2] let bool2 = dict.allSatisfy { $0.key == String($0.value) } print(bool2) // true var set = Set() set.insert(2) set.insert(4) set.insert(6..
throws 함수 내부에서 오류를 밖으로 던지고, 사용하는 쪽에서 그 오류를 처리할 때 사용하는 키워드 throws키워드는 함수 시그니처의 반환 전 화살표 좌측에 사용 enum MyError: Error { case negativeValue } func plus(one: Int, two: Int) throws -> Int { guard one < 0 && two < 0 else { throw MyError.negativeValue } return one + two } throws 처리 do { let value = try plus(one: -1, two: 2) print(value) } catch { print(error) } rethrows 파라미터로 전달받은 함수가 에러를 던질 때 사용 이름이 ret..
사전 지식) string to date 형변환 방법 DateFormatter 인스턴스를 사용하여 문자열을 어떤 형태의 날짜 형태로 만들것인지 명시 DateFormatter 인스턴스로 string을 date로 변환 let dateString = "2022-04-11T15:25:47.929Z" let dateFormatter = DateFormatter() dateFormatter.locale = .init(identifier: "en_US_POSIX") dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" if let date = dateFormatter.date(from: dateString) { print(date) // Date 타입 2015-05-15 ..
사전 지식) 스위프트의 스레드 스위프트의 main queue는 serial queue이므로, 한 task가 끝나고 난 후에 다음 task를 실행 만약 main.sync로 실행시키면 이 serial queue에 작업이 끝날 때 까지 그 코드에 머물러 있는 상태 queue가 block되고 queue에 넣은 작업들이 완료될때까지 wait 상태 serial queue이므로 이미 block 상태가 되었기 때문에 deadlock 발생 thread safe하게 사용하려면, background thread에서 main.async를 사용하여 순서에 맞게 UI업데이트가 되도록 구현 크게 main(serial)과 global(concurrent)가 존재 async와 concurrent의 차이 async, sync 단일 작업..
1. AVFoundation 개념 - 구조, AVAsset, AVKit 2. AVFoundation 개념 - AVPlayer, AVPlayerItem 3. AVFoundation 개념 - AVPlayer 오디오 재생, 일시정지, 재생구간 이동 구현 (play, pause, seek) 4. AVFoundation 개념 - AVPlayer, AVPlayerLayer로 동영상 재생 방법 5. AVFoundation 개념 - AVAudioSession 개념 (오디오 활성화, 입출력 변경, 잠금화면 재생, 재생 중 전화가 온 경우 처리) * 번외) 오디오 처리 - AVPlayer, AVAudioPlayer 개념 (실시간 스트리밍, 로컬 파일 재생) AVAudioSession AVAudioSession라는 싱글톤이..
1. AVFoundation 개념 - 구조, AVAsset, AVKit 2. AVFoundation 개념 - AVPlayer, AVPlayerItem 3. AVFoundation 개념 - AVPlayer 오디오 재생, 일시정지, 재생구간 이동 구현 (play, pause, seek) 4. AVFoundation 개념 - AVPlayer, AVPlayerLayer로 동영상 재생 방법 5. AVFoundation 개념 - AVAudioSession 개념 (오디오 활성화, 입출력 변경, 잠금화면 재생, 재생 중 전화가 온 경우 처리) AVPlayerLayer CALayer의 서브클래스이고, 동영상을 재생시킬 수 있는 layer 보통 AVPlayerLayer의 인스턴스를 AVPlayer를 생성자로하여 만든 후,..
트랜잭션의 의미 트랜잭션: 원자성, 일관성, 독립성, 지속성을 갖춘 Operation 원자성(atomic): 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력 ex) A사람이 B사람에게 돈을 보내는 작업을 한 경우, A사람은 돈이 빠져나갔지만 B사람한테 돈이 전달되지 않은 경우, 원자성 위배 일관성(Consistency): n번 Operation을 했을 때 기대하는 값이 모두 일관적으로 동일해야함 독립성(Isolation): Operation 수행 시 다른 작업이 끼어들지 못하게 하는 것 지속성(Durability): 성공적으로 수행된 Operation은 영원히 반영 애플의 CATransaction 트랜잭션에서 atomic (부분적으로 실행되다가 중단되지 않는 것을 보장) 특성을 따르며, layer..
Xcode에서 Release 스킴 추가하기 scheme 버튼 클릭 New Scheme 클릭 ExCheme-Release 입력 후 OK 클릭 생성된 것 확인 -> Edit Scheme 클릭 Release 스킴인지 확인 후, Build Configuration을 Release로 변경 추후에, Project의 Configuration을 설정하는 곳은 Project -> Configurations에서 인증서나 .config 파일 관리 configuration을 사용하여 phase 관리하는 방법은 이전 포스팅 글, 배포 환경 설정 참고 Phase 별 빌드 세팅 custom flag 설정 (매크로 상수) Target -> Build Settings -> swift compiler - Custom Flags ex) ..