WooKoo Blog

물과 같이

분류 전체보기 123

Swift - 프로토콜 맛보기

프로토콜은 왜 쓰는가?? 1. 불필요한 상속을 피하고 각기 다른 기능을 구현하고 싶을 때 2. 델리게이트 패턴을 사용하고싶을 때 Anyobject, class을 상속 시 클래스에서만 프로토콜을 사용 할 수 있게 된다. 좋은점 - ARC 메모리 관리 시스템은 클래스를 다루고 있을 때 쉽게 할당할 수 있습니다(객체의 참조 횟수 증가). 이러한 정보가 없으면 컴파일러는 구조체가 프로토콜을 따를 경우를 대비해 할당과 해제를 고려해야하므로 비용이 많이들 수 있습니다. 옵셔널 구현은 @objc를 프로토콜 앞에 붙여 준 후 @objc optional func funcName() 이런식으로 구현해준다.(프로퍼티도 가능) 델리게이트 패턴 구현 시 기억해야할 것 1. 채택쪽 프로토콜 채택, 메서드 구현, 대리자 지정 2...

개발/개발 2021.11.02

RxSwift - Tap과 Action 으로 이벤트 처리

사실 둘의 장단점과 언제 어떤 걸 쓰는지 잘은 모르지만 액션처리에 대해 위 두 방법이 있다는 것을 정리해보면서 공부해보려고한다. 먼저 RxCocoa의 Tap 으로 구현 할 때 해당 액션 버튼의 아울렛을 연결 해둔 뷰 컨트롤러에서 다음과 같이 사용한다 buttonName.rx.tap .throttle(.milliseconds(500), scheduler: MainScheduler.instance) .subscribe(onNext:{[weak self] _ in // 방출 할 이벤트나 처리 print("Code") }) .disposed(by: rx.disposeBag) 위 방법의 좋은점은 해당 뷰 컨트롤러에서 이벤트의 처리를 간편하게 구현 할 수 있다는 점?? 쓰로틀은 해당 버튼 이벤트가 0.5마다 방출하..

개발/개발 2021.10.24

[iOS] - iOS 의존성 주입(Dependency Injection) 알아보기 - 2

그럼 IOC 컨테이너인 SwInject를 간단히 이용해보도록하고 의문이 드는 것들에 대해 정리해보도록 하겠다. 들어가기 앞서 쓰이는 용어들이 있다. container: 여러곳의 외부에서 인스턴스를 주입할 텐데 컨테이너라는 한 곳에서 모든 인스턴스를 다 가지고 있다. register: 컨테이너에 내가 사용할 인스턴스를 만들어서 등록 할 때 쓰는 용어 resolve: 컨테이너에게 인스턴스를 달라고하면 컨테이너에서 꺼내줄 때 사용하는 용어 설치 방법은 생략하겠다. 코코아팟, 카르타고, 스위프트 패키지매니저 등 다 됌! 코드로 된 뷰 컨트롤러에 라벨을 추가하고 앞에서 사용했던 nameProtocol을 컨테이너를 이용해서 외부 주입된 name을 사용해보도록 하겠다. 클래스의 외부는 AppDelegate가 될 것이..

개발/개발 2021.08.23

[iOS] - iOS 환경에서 의존성 주입(Dependency Injection) 알아보기

의존성 주입을 하면 좋은 점이 많다고 하길래 해당 내용을 iOS를 기준으로 공부해보도록 할 것 이다. 먼저 기본적으로 알아야할 개념들이 너무 많아서 전부 다룰 수 있을지 모르겠지만 천천히 정리해보도록 하겠다. 1. 의존성 주입 (Dependency Injection) 의존성 주입을 한 문장으로 정리하자면 외부에서 초기화해서 클래스 안에 할당해주는 것입니다. 2. 장점 (왜쓰는가?) 그럼 의존성 주입을 사용하면 뭐가 좋을까? 1. 재사용성이 높아짐 2. 테스트 용이 3. 코드 단순화 -> 결합도는 낮추면서 유연성과 확장성 향상 3. 그럼 의존성이 뭔지 주입이 뭔지 알아보자 의존성이란 Mobile 클래스를 Task클래스에서 사용하고 있으니까 의존성이 생기게 된다. 이처럼 어떠한 클래스에서 다른 클래스를 사..

개발/개발 2021.08.23

[iOS] - The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions (Rx 타입추론 에러)

The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions RX를 공부하면서 위 에러가 나왔다. 타입추론을 하기 어려워서 빌드를 할 수 없다는 것인데 나는 combineLatest 오퍼레이터와 map을 함께 사용하면서 발생했다. 이 옵저버를 변수에 넣고 map을 사용해보자. 즉 쪼개기를 잘 해보면 빌드 할 수 있다.

개발/개발 2021.07.22

[WWDC] - WWDC 2021 주요 변경 부분 정리 요약!

2021년 6월 8일 있었던 WWDC 21 주요 내용들을 한번 정리해보았습니다. 가볍게 봐주세요. 아이폰!! 1. iOS 15 - 페이스 타임 iOS 15버전에서 눈에 띄는 가장 큰 변화는 페이스 타임(Face Time)이다. 기존 페이스 타임은 영상 통화였으나 이번 업데이트는 링크 제공을 할 수 있다. 링크를 통해서 페이스 타임에 접속 할 수 있고, 상대방이 윈도우, 안드로이드를 사용해도 가능하다. (기존에는 아이폰 to 아이폰 만 가능했다.) 또한, 화면 공유 기능도 가능하다. (업무 지원 시 고객님의 화면을 보면서 설명해 줄 수 있을 듯??) 에어팟 프로 같은 노이즈 캔슬링 원리를 페이스 타임에도 적용하여 주변 잡음을 최소화 시켰고, 누가 말하는지 확실하게 표시가 가능해졌다. 2. 아이폰 iOS 1..

개발/개발 2021.06.15

[iOS] - Realm 사용해보자 - Realm 메뉴얼

Realm 이란? 오픈 소스 이고, 데이터 베이스 이고, 모바일 환경을 위한 타깃 것이고, 기존의 정형화된 데이터베이스와는 다르게 NoSQL을 지향하는(쿼리 안쓴다는 거 같음.. )?? 데이터 모델 자체가 객체 컨테이너로 되어있다!! 속도도 기존 데이터 베이스보다 빠르고, 구축도 쉽고 Realm Studio가 있어서 실시간으로 확인 가능 안드와도 DB 공유가 된다! 단점은? 바이너리 용량이 늘어나고 다양한 쿼리를 지원하지 않는다 개인 프로젝트를 하면서 간단하게 필요한 데이터를 객체 형식으로 저장하고 싶었다. CoreData나 SqlLite를 사용해도 되지만 간단한 정도만 필요해서 Realm도 사용해보고 쪼금? 공부도 해보려고한다. ㅎㅎㅎ 먼저 설치는 코코아팟으로 pod 'RealmSwift' 라고 적어주..

개발/개발 2021.05.23