🍎 iOS 25

[RxSwift] Disposable, Dispose, DisposeBag

Disposable, Dispose RxSwift에서, 옵저버는 subscribe를 통해 이벤트를 전달받아서 처리하게 되는데, subscribe는 이후에 Disposable 을 반환한다. 또한 Disposable에는 'Dispose resource' 할 수 있는 dispose() 메소드가 제공된다. dispose의 원래 뜻은 '처분하다' 로, 이를 통해 유추해보면 이벤트에 대한 처리를 마치고 더이상 처리하지 않으니 구독을 해제해라! 라는 의미인 것으로 보인다. 정리하자면 subscribe의 반환값으로 Disposable 이 반환되고, 이벤트 처리가 끝나면 해당 구독을 유지할 필요가 없으니 구독을 해제해주는 과정이 dispose() 라고 할 수 있다. dispose를 꼭 해주어야만 하는 이유는, 구독이 끝..

🍎 iOS/RxSwift 2023.03.16

[iOS/GCD] 2. GCD의 개념 및 종류

Swift로 동시성 프로그래밍을 구현하는 방법은 GCD, Operaion, async/await이 있다. 여기서는 GCD, DispatchQueue에 대해 알아보도록 하겠다. (혹시 틀린 정보가 있으면 댓글로 알려주시면 감사하겠습니다!) Dispatch(=GCD)란? *공식문서 링크: https://developer.apple.com/documentation/dispatch - 멀티코어 하드웨어에서 코드가 동시에 실행되도록 자동으로! iOS에서 관리해주는 시스템 - GCD는 응용 프로그램 각각을 자동으로 효율적으로 자원을 사용하도록 분배해준다. DispatchQueue란? *공식문서 링크 : https://developer.apple.com/documentation/dispatch/dispatchqueu..

🍎 iOS/GCD 2023.03.10

[iOS/GCD] 1. 코어/스레드/프로세스, 직렬/병렬/동시, 동기/비동기

코어와 스레드, 프로세스 용어 정리 코어 : CPU의 핵심으로 CPU에서 실제로 일을 처리하는 본체 - 코어가 많다 = 작업을 처리해줄 친구가 많다. (알바생이 많다) - 코어는 한 번에 한 가지 일만 처리할 수 있음. 그러나 실제로는 싱글 코어를 가진 컴퓨터라도 음악을 들으며 문서를 작성하는 등 여러 작업을 동시에 처리할 수 있다. - 햄버거집에 알바생이 1명 있다고 가정해보면 (싱글코어), 치킨 햄버거, 불고기 햄버거, 치즈 햄버거를 동시에 만들고 있음을 볼 수 있다. 하지만 이것은 한 번에 만드는 것처럼 보이는 것이지, 사실은 일을 짧은 단위로 나누어서 하나씩 번갈아가면서 요리를 하는 것임 (이걸 운영체제 용어로 시분할! 이라고 함) - 각 햄버거의 빵을 올리고, 불고기를 굽고, 치즈를 올리고 ....

🍎 iOS/GCD 2023.03.10

[RxSwift] RxSwift + MVVM + Moya 적용 (feat. tableview binding)

Podfile # Moya with rx pod 'Moya/RxSwift', '~> 15.0' # RxSwift & Cocoa pod 'RxSwift', '~> 6.5.0' pod 'RxCocoa', '~> 6.5.0' # SwiftyJson pod 'SwiftyJSON', '~> 4.0' 1. 엮을 API의 구조 header x-access-token : jwt 토큰 response { "isSuccess": true, "code": 1000, "message": "성공", "result" : [ { "profileImageUrl" : "이미지 링크", "roomId" : 255, "title" : "test", "repUserName" : "Runnber6421", "recentMessage" : "..

🍎 iOS/RxSwift 2023.01.19

[RxSwift] 곰튀김 RxSwift + MVVM 정리

1. 왜 비동기 프로그래밍을 하는가? 생활 예로, 마트에서 물건을 살 때 계산 줄을 서는 것을 생각하면 쉽다. 먼저 온 순서대로 한사람 한사람씩 계산되는 과정이 '동기적 프로그래밍'이다. 여기서, 어떤 사람이 물건을 엄청 많이 샀다던가, 계산 중에 다른 물건을 집어온다거나 할 때, 뒤에 서있는 고객들은 그 문제의 사람이 계산을 마칠 때까지 기다리는 수밖에 없다. 이와 같이, 동기적으로 프로그래밍을 한다면 한 작업이 끝날 때까지 그 뒤의 어떤 작업도 진행되지 않기에, 화면 로딩, 통신 연결 등의 비효율을 높이고, 사용성 또한 급격히 떨어진다. 코드가 한 페이지에서 동기적으로만 일을 하게 된다면, 아마 페이지 최상단에 있는 것부터 하나씩 또 하나씩 로딩이 될 것이며, 설상가상 시작하면 중간에 물릴 수도 없으..

🍎 iOS/RxSwift 2023.01.16

[iOS/Swift] FSCalendar로 캘린더 구현하기

🔥 목표는 위 캘린더를 구현하는것! - 저는 Snapkit으로 구현하였습니다. 1. FSCalendar 뷰 생성 및 delegate, datasource 선언 private var calendar = FSCalendar() //viewDidLoad() calendar.delegate = self calendar.dataSource = self 2. 달력 기본값 세팅 calendar.scope = .month //월 표시 calendar.locale = Locale(identifier: "ko_KR") //요일을 한글로 표시하기 위함 3. 헤더 - 기본 설정 calendar.appearance.headerDateFormat = "YYYY년 MM월" //헤더 포맷 calendar.appearance.head..

[iOS/Swift] Tableview/Collectionview 페이징 (Pagination)

1) UIScrollViewDelegate - TableView, CollectionView에는 스크롤이 내장되어있으므로 UIScrollViewDelegate 이용이 가능하다. 현재 테이블뷰/스크롤뷰가 있는 UIViewController에 UIScrollViewDelegate를 상속한다. 2) 필요 변수 - arraylist : 무한스크롤하여 불러올 데이터를 담을 array list 준비 -> 초기에는 빈 리스트 - pageNum : API의 pageNumber 변수 - fetchingMore : 더 스크롤하여 데이터를 불러올지에 대한 boolean 변수 -> 초기에는 true 값 3) scrollViewDidScroll 함수 그 다음, scrollViewDidScroll 함수에서 스크롤이 끝까지 닿았는..

[iOS] 뷰 컨트롤러 생명주기 / 앱 생명주기

뷰 컨트롤러 생명주기 - 하나의 뷰 컨트롤러가 생겨나고 종료되기 전까지의 주기 1. loadView - 뷰컨트롤러가 관리하는 뷰를 메모리에 올리는 시점 - 뷰컨트롤러는 스토리보드상에서 혹은 xib로 연결된 뷰가 있다면 해당 뷰를 불러오고, 코드로 짠 뷰가 있다면 해당 뷰로 바꿀 수 있는 시점 2. viewDidLoad - 프로젝트 생성시 디폴트로 생기는 메소드 -> 뷰의 로딩이 완료되었을 때 시스템에 의해 자동으로 호출 - 딱 한번만 실행되는 메소드 -> 뷰 컨트롤러에서 초기화 필요한 속성들 초기화 시 사용 3. viewWillAppear - 뷰가 화면에 보이기 직전에 호출되고 여러번 호출됨 - 1) 처음 화면에 진입할 때 2) 다른 뷰컨에 갔다가 다시 돌아올때 호출 4. viewDidAppear - 뷰..

[iOS] Swift에서 데이터를 전달하는 방법

1. 프로퍼티에 직접 접근해 data 전달하기 - 네비게이션 컨트롤러에서 데이터를 전달하는 방식 - 프로퍼티란? : 클래스에 속해있는 변수 ViewController (첫번째 화면) import UIKit class ViewController: UIViewController { @IBOutlet weak var propertyTextField: UITextField! //텍스트필드의 변수를 가져와서 @IBAction func sendData(_ sender: Any) { guard let vc = storyboard?.instantiateViewController(identifier: "secondViewController") as? SecondViewController else { return } vc..

반응형