본문 바로가기
반응형

전체 글94

[Swift] NSObjectProtocol, NSObject Cannot declare conformance to 'NSObjectProtocol' in Swift;NSObjectNSObject는 모든 Objective-C 클래스의 기본 클래스이다.NSObject는 기본적으로 MacOs와 iOS 최상위에 위치하고 있다. 이것은 모든 객체가 공통적으로 가져야 하는 기본적인 동작을 정의하며, 객체 지향 프로그래밍의 근간이 되기도 한다. 객체 초기화 및 메모리 관리:init: 기본 초기화 메서드deinit: 객체가 해제될 때 호출되는 메서드로, Swift에서는 deinit 키워드로 사용객체 비교 및 해싱:isEqual(_:)와 hash: 객체 비교와 해싱을 위한 메서드런타임 클래스 정보:class와 isKind(of:): 객체의 클래스 정보를 제공하고, 특정 클래스의 .. 2024. 7. 16.
[RxSwift] 재사용으로 인해, 테이블뷰 셀안에 버튼이 반응하지 않을때 private func setupActions() { agreeBtn.rx.tap .bind(to: agreeButtonTapped) .disposed(by: disposeBag) goBtn.rx.tap .bind(to: goButtonTapped) .disposed(by: disposeBag) } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) [agre.. 2024. 7. 10.
[Swift] 고차함수 (map, filter, reduce, compactMap, flatMap) 고차함수 (Higher-order Function)Swift에서 고차함수(Higher-Order Function)는 다른 함수를 인자로 받거나 함수를 반환하는 함수입니다. 이러한 함수는 코드의 재사용성을 높이고, 함수형 프로그래밍 스타일을 사용할 수 있게 해줍니다1. mapmap 함수는 배열의 각 요소에 동일한 연산을 적용하여 새로운 배열을 반환합니다.let numbers = [1, 2, 3, 4, 5]let squaredNumbers = numbers.map { $0 * $0 }print(squaredNumbers) // [1, 4, 9, 16, 25] 2. filterfilter 함수는 배열의 요소 중 주어진 조건을 만족하는 요소들만을 포함하는 새로운 배열을 반환합니다.let numbers = [1,.. 2024. 7. 5.
[Swift] 타입에러 경고 Cast from 'JSON?' to unrelated type ' ' always fails 해당 경고는 Swift에서 JSON? 타입을 다른 타입(예: [[String: Any]] 또는 Data)으로 캐스팅하려고 할 때 발생합니다.경고가 뜨는 이유는 Swift의 타입 시스템에서 JSON 타입이 예상하는 타입과 호환되지 않기 때문입니다.해결하기 위해서는 JSON 타입을 적절하게 처리하고, 이를 원하는 타입으로 변환해야 합니다.if let res = res { let data = try res.rawData() // JSON 데이터를 Data로 변환 let terms = try JSONDecoder().decode([DTO].self, from: data) // Data를 [DTO]로 디코딩 .. 2024. 7. 4.
[Swift] self?. vs guard let self = self 클로저내에서 self를 참조할 때, self?.와 guard let self = self의 사용은 주로 강한 참조와 약한 참조, 그리고 코드 가독성과 안전성 측면에서 차이를 보입니다. self?. 사용someClosure = { [weak self] in self?.doSomething()}self?.는 클로저 내에서 self를 약하게 참조(weak reference)할 때 사용됩니다. self가 nil일 경우 클로저 내의 코드가 실행되지 않도록 합니다.장점:안전성: self가 nil일 경우 클로저 내의 코드가 실행되지 않아 안전합니다.간결함: 짧고 간결한 코드로 작성할 수 있습니다.단점:옵셔널 처리: 모든 self 참조가 옵셔널이므로, 추가적인 옵셔널 언래핑이 필요할 수 있습니다.부분 실행: se.. 2024. 7. 3.
[RxSwift] Rx를 이용한 페이징처리 RxSwift를 이용해서 조금 더 리엑티브하게 페이징 처리를 해보았습니다.extension Reactive where Base: UIScrollView { var reachedBottom: Observable { return contentOffset .flatMap { [weak base] contentOffset -> Observable in guard let scrollView = base else { return Observable.empty() } let visibleHeight = scrollView.frame.height - scrollView.contentInset.top - scrollView.con.. 2024. 6. 25.
반응형