일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ContentMode
- iOS교육
- restfulAPI
- URLSession
- RxSwift
- UICollectionViewListCell
- alamofire
- 라이징캠프
- UIKit
- UIListContentConfiguration
- ReactiveX
- Main Thread
- IOS
- 개발블로그
- RequestInterceptor
- Moya
- SWIFT
- interceptor
- SwiftUI
- observable
- QoS
- Xcode
- RxCocoa
- 컴공선배
- cellForRowAt
- flatmap
- observe(on:)
- dispatchqueue
- distinctUntilChanged
- defaultContentConfiguration
- Today
- Total
목록Xcode (8)
RB의 iOS 개발 이야기

안녕하세요. 오늘은 오랜만에 RxSwift를 다시 공부해볼 겸 곰튀김 님의 강의 영상을 시청하던 중 전혀 모르고 있던 꿀팁을 알게되어 공유드릴 겸 글을 작성하게 되었습니다! 바로 확인해보시죠! 먼저 간단하게 어떻게 메모리 누수를 일으키는지 코드를 살펴 보겠습니다. private func downloadJson(_ url: String) -> Observable { return Observable.create() { f in DispatchQueue.global().async { let url = URL(string: url)! let data = try! Data(contentsOf: url) let json = String(data: data, encoding: .utf8) DispatchQueue.m..

이번 포스트 또한 이전 포스트에서 이어지는 글 입니다! 이전 포스트를 읽고 오시면 이해하시는데 더욱 도움이 될 것 같습니다 ㅎㅎ https://rb-ios.tistory.com/13 Rx가 지원하는 스케줄러(schedulers)의 종류들 이번 포스트는 바로 직전의 포스트의 다음 글로 내용이 이어집니다! 이전 포스트를 확인하고 넘어오시는 것을 추천드립니다 ㅎㅎ https://rb-ios.tistory.com/12 Alamofire RequestInterceptor 사용해보기 로그 rb-ios.tistory.com 직전 포스트에서 Rx의 Scheduler에 대하여 알아봤습니다. 그런데? .observe(on: SerialDispatchQueueScheduler.init(qos: .background)) 일단..

로그인 같은 작업을 수행하게되면 대개 로그인 API에서 accessToken과 refreshToken을 반환하게된다. 이러한 토큰들은 앱 내의 여러 작업을 수행하는 API를 요청할 때에 필요한 값들인데 오늘은 회원탈퇴를 구현하는 부분에서 구현하는데에 시간이 꽤 많이 소요된 부분을 정리하고자 한다. 회원탈퇴를 요청할 때에 내가 사용중인 API는 요청 바디는 없으며 요청 헤더로 응답받은 accessToken과 고유 key를 넣게된다. 회원탈퇴 API를 요청하는 부분에서 고려해야할 상황이 있는데 로그인 후 앱을 사용하다가 token이 만료되는 상황이 있을 수 있다는 것이다. 대개 흔치 않은 경우지만 개발자는 사용자의 모든 경우의 수를 생각하고 개발해야 하기에 회원탈퇴 시 token이 만료되는 상황을 고려해보았..

iTunes Search API를 활용하기 오늘은 애플의 iTunes Search API를 활용하여 기본 앱인 앱스토어의 검색 기능을 구현하던 중 메모리 누수와 앱 정지 이슈를 경험하게 되어 작성하게 되었습니다. 예제는 RxSwift를 기반으로 코드를 작성하였고 RxSwift를 학습하면서 예제를 구현하고있어 문제를 파악하고 해결하는데 시간이 꽤 걸렸던 것 같습니다. 원하는 기능 (실제 앱 스토어 기능 구현) 초기 화면 - 검색결과가 없는 (당연하게도) 상태 단어 검색 중 - 검색 중에도 검색 결과는 나타나지 않음 검색 버튼 클릭 - 검색 창의 단어로 API를 요청하여 검색 결과를 받아 테이블 뷰에 보여짐 취소 버튼 클릭 - 모든 결과와 검색 창의 단어도 사라지며 초기 상태로 돌아옴 검색 단어 수정 - 검..

Observable vs Subject Observable은 이벤트를 방출하는 역할을 담당하고 Observer는 Observable을 구독하며 이벤트를 받아서 처리하는 역할을 담당합니다. 여기서 Observable은 새로운 값을 받을 수 없다. 그렇다면 Observer 역할을 하는 녀석은 누구일까? 글의 제목에서 유추할 수 있듯이 Observer 역할을 하는 친구가 Subject입니다. Subject의 RxSwift 문서를 확인해보면 Observable을 상속받고 있고 ObservavleType을 채택하고 있습니다. 그렇기에 정확히는 'Observer 역할을 하는 친구가 Subject이다.' 라는 말 보다는 'Observable과 Observer의 역할을 모두 가지고 있는 친구가 Subject이다.'가 ..

안녕하세요! 오늘 다뤄볼 내용은 기존에 사용했던 tableView, collectionView를 살펴보고 더 편한(?) 새로운(?) 최신의 기술들을 한번 끄적여볼까 합니다 ㅎㅎ 가장 먼저 기볍게 tableView 먼저 보겠습니다. 그럼 바로 확인해보도록 하겠습니다! 기존의 TableView와 CollectionView 이해를 돕기 위한 예제 코드입니다! 그대로 복붙하시면 컴파일 런타임 오류가 일어나고 문법적으로도 잘못된 문법도 있습니다! storyboard base가 아닌 code base의 코드들입니다. import UIKit import SnapKit class SimpleViewController { let forwards = [Player(name: "Haaland", position: "Forw..

먼저 UIImageView의 Apple 공식문서를 확인해봅시다. A view that displays a single image or a sequence of animated images in your interface. 인터페이스에 단일 이미지 또는 일련의 애니메이션 이미지를 ‘표시하는 뷰’입니다. ‘단일 이미지 또는 애니메이션 이미지를 표시하는 뷰’라고 정의하고 있습니다. ContentMode Options to specify how a view adjusts its content when its size changes. 크기가 변경될 때 보기가 내용을 조정하는 방법을 지정하는 선택사항입니다. ‘보기가 내용을 조정하는 방법’을 지정하는 것이랍니다. ContentMode는 열거형으로 구성되어있군요! 그..

Meun Bar 가장 먼저 메뉴 영역입니다. Mac OS의 특징이라고 할 수 있습니다. Mac의 시스템 설정과 함께 사용중인 프로그램 이름 그리고 프로그램의 메뉴들이 나열되어 있습니다. 메뉴 중 자주 사용되는 메뉴와 알고 있으면 유용한 메뉴들은 본문 하단에서 살짝 다루어 보겠습니다. Navigator Bar 다음으로는 가장 좌측의 네비게이터 영역입니다. 프로젝트와 하위 폴더 파일에 접근할 수 있고 새로운 그룹과 파일을 생성할 수 있습니다. 네비게이터 아이콘을 사용해 네비게이터 영역을 숨겼다 보였다 할 수 있습니다. 네비게이터 영역을 숨긴채 작업한다면 다음에 설명드릴 Editor Bar (에디터 영역)을 보다 넓게 사용할 수 있습니다. 네비게이터 영역에서는 추가적으로 여러 아이콘을 확인할 수 있습니다. 가..