ios
-
RIBs (미완성)ios/Architecture 2022. 8. 22. 17:43
RIBs https://github.com/uber/RIBs GitHub - uber/RIBs: Uber's cross-platform mobile architecture framework. Uber's cross-platform mobile architecture framework. - GitHub - uber/RIBs: Uber's cross-platform mobile architecture framework. github.com Modern RIBs (RxSwift를 걷어내고 Combine을 사용한 RIBs) https://github.com/DevYeom/ModernRIBs GitHub - DevYeom/ModernRIBs: Uber's RIBs with Combine. Uber's RIBs w..
-
App Logicios/Architecture 2022. 8. 18. 17:44
학습 목표 : 앱과 비즈니스 로직을 배운다. 앱 로직의 분류 외부 디펜던시 데이터 저장 - 메모리 캐시, 바이너리, 데이터베이스, 파일 등 서비스 - 네트워크, 블루투스, 위치 서비스 등 비즈니스 로직 내비게이션 - 화면의 이동(Present, Dismiss, Push, Pop) 코디네이션 - 각종 layer를 조합해 앱이 사용자를 위해 하는 일 UI 뷰 - UIView, UIViewController 프레젠테이션 - 이미지, 색상, 폰트 등 UI 모델 변환 결국 아키텍처 패턴이란 UI, Presentation, Coordination, Navigation, 외부 서비스들이 서로서로 어떻게 정보를 주고 받을지를 구체적으로 정의한 약속이다. 아키텍처를 파악할 때 이런 각 요소들이 아키텍처의 어디에 들어가야..
-
아키텍처 & Compositionios/Architecture 2022. 8. 18. 16:50
학습 목표 : 아무리 복잡한 기능도 작은 객체들로 나눌 수 있다면 특성있는 아키텍처의 기본기를 가질 수 있다. Composition(합성, 조립) A way to combine objects and data types into more complex ones - Wikipedia ( 객체와 데이터 타입을 조합해서 더 복잡하고 어려운 일을 객체로 만드는 방식 ) Composition의 중요성 - Composition은 다른 패턴들을 배우는 데 도움이 되는 기본기 패턴 - Composition을 제대로 활용한다면 궁극적으로 SRP를 잘지킬 수 있게 됨 - DRY원칙도 지킬 수 있게 된다. 기존에 존재하던 패턴들은 각자의 문제점을 가지고 있다. MVC -> Massive ViewController MVVM -..
-
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)ios/개발하다가 2022. 6. 13. 21:57
Swift 코드의 맥락에서, EXC_BAD_INSTRUCTION 일반적으로 컴파일러 트랩, 즉 런타임에 감지된 버그로 인해 컴파일러가 코드에 삽입한 정의되지 않은 명령어를 의미합니다. 가장 흔한 원인은 다음과 같다. optional 언래핑 실패 — 강제 언래핑(!) 또는 암시적 언래핑(nil인 암시적으로 unwrapped 옵셔널에 액세스)으로 인해 범위를 벗어난 배열 실패한 강제 캐스팅(as!), 값이 nil optional이거나 값이 잘못된 타입이기 때문에 옵셔널을 다룰 때, 목표는 그 옵셔널의 범위를 가능한 한 많이 제한하는 것이어야 한다 . 그렇게 하면 한 번만 풀기만 하면 되므로 한 곳에서만 실패할 수 있으므로 다른 모든 코드가 더 간단해집니다. 참고 https://developer.apple.c..
-
UITableViewios/Etc 2022. 6. 3. 16:03
UITableView 단일 열 안에 행을 사용하여 데이터를 나타내는 view 수직 스크롤을 할 때 같은 형태가 반복되면서 내용은 달라지는 view 수직 스크롤만 가능하다. 테이블의 개별 항목을 구성한는 단위를 cell이라고 하며 타입은 UITaleViewCell이다. indexPath값을 통해 cell을 구분하며 여러 행은 하나의 섹션 안에 구성될 수 있고, 각 섹션은 header와 footer를 가질 수 있다. 또한 스크롤, 행 선택, 테이블 내용 편집, 행 추가 또는 제거 애니메이션과 같은 일반적인 동작을 처리하기 위한 내장 기능이 있다. UITableView를 왜, 언제 사용할까 UI가 반복되고, 데이터만 다른 경우 데이터가 많아 재사용이 필요한 경우 데이터가 가변적일 때, 동적할당이 가능하다. 메..
-
Optionalios/Etc 2022. 5. 27. 17:32
스위프트는 안전성을 매우 중요시하는 까다로운 언어이다. 이러한 안정성을 대표하는 중요한 요소 중 하나가 Optional이라는 개념이다. Optional은 Type casting이나 nil value(= null ) 체크 등에 있어서 중요한 역할을 한다. 옵셔널 값이 존재할 수도 있고 값이 존재하지 않을 수도 있다고 명시하는 것 래핑된 값이 존재하거나 값이 없다는 nil을 표현하는 형식 옵셔널로 정의한 변수와 그렇지 않은 변수는 서로 다른 타입이다. //옵셔널 변수를 정의할 때는 타입 어노테이션에 ?를 붙여야 한다. //옵셔널에 초깃값을 지정하지 않으면 기본값은 nil이다. var a:String? var b:String = "I'm b" //옵셔널 변수가 아니라면 nil을 할당할 수 없다. a = nil..
-
MVC/MVVMios/Etc 2022. 5. 27. 15:52
Design Patterns 2022.03.06 - [ios/Etc] - GoF Design Pattern MVC(Model - View - Controllers) MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴 간단한 쇼핑 리스트 앱이 있다고 해보자. 우리가 원하는 것은 이번 주에 사야할 각 항목의 이름, 개수, 가격의 목록이다. MVC 를 사용해 이 기능의 일부를 구현하는 방법을 아래에서 설명하겠다. (view: controller = n:1 구조) MVC 패턴의 구성 요소 모델(Model) 모델은 앱이 포함해야할 데이터가 무엇인지를 정의한다. 데이터의 상태가 변경되면 모델을 일반적으로 뷰에게 알리며(따라서 필요한대로 화면을 ..
-
AutoLayoutios/Etc 2022. 5. 19. 19:09
AutoLayout Auto Layout은 뷰 계층 구조에 있는 모든 뷰의 크기와 위치를 해당 뷰에 적용된 제약 조건에 따라 동적으로 계산한다. 예를 들어, 버튼이 이미지 view에서 수평으로 가운데에 놓이고 버튼의 위쪽 가장자리가 항상 이미지 아래쪽에서 8포인트 아래로 유지되도록 버튼을 제한할 수 있다. imageView의 크기나 위치가 변경되면 버튼의 위치가 자동으로 그에 맞게 조정된다. 외부 변경 사항 슈퍼뷰의 크기나 모양이 변경되면 외부 변경이 발생한다. 변경할 때마다 사용 가능한 공간을 최대한 활용하도록 view 계층 구조의 레이아웃을 업데이트해야 한다. 외부 변경의 몇 가지 일반적인 소스 사용자가 창 크기를 조정할 때(OS X). 사용자가 iPad(iOS)에서 Split View를 시작하거나 ..