일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- scrolling tab
- GeometryReader
- base64 변환
- Swift Package Manager
- Android
- UIViewControllerTransitioningDelegate
- DataBinding
- detect url
- transformation.map
- oberve url
- 개발자 면접
- Side Menu
- Tuist
- pod install
- ViewBuilder
- List
- development language
- 기존 앱
- convert base64
- 상단 탭바
- DevelopmentRegion
- SwiftUI
- ios
- swift
- swift #swift keychain #keychain 사용법
- 스크롤 탭
- UIPresentationController
- url 추적
- url 관찰
- notifychanged
- Today
- Total
목록분류 전체보기 (172)
버그 잡이
각각의 언어들은 다양한 자료구조를 쉽게 사용할 수 있는 자체적인 라이브러리들을 제공해준다. 그래서 실제 개발시에는 자료구조를 "어떻게 구현하지?"에 초점을 맞추기 보다 "어떤 상황에 어떤 자료구조를 쓰지?"에 초점을 맞추는 것이 보다 효율적인 질문일 수 있다. Java에서는 자료구조에 대한 어떤 라이브러리들을 제공해주는지, 또 이들은 각각 어떤 상황에 사용할 수 있는지 살펴보자. 1. List - 리스트는 Index를 사용해서 특정 원소를 조회하고 삽입할 수 있는 것이 특징인 자료구조이다. - 순서가 있고 데이터의 중복을 허용한다. *ArrayList - 자료에 대한 조회에 있어서 상대적으로 높은 성능을 보인다. *LinkedList - 데이터의 추가, 삭제가 빈번한 경우 유리하다. #어디에 쓰이는가? ..
1. Generic이란? - 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 - 인스턴스화 할때 지정됨 -> (클래스를 정의할때는 데이터 타입을 확정하지 않고) 해당 클래스의 내용을 실체화할때 구체적으로 type을 명시하는 것 2. 왜 Generic을 사용하는가? - 같은 구성의 클래스일 경우 코드 중복 제거를 위해서 클래스 type을 object로 받을 수 있다. - 하지만, 이 경우 다른 타입으로 casting 할 경우 추후 casting 시 에러가 발생한다. - Java는 type에 대한 명확한 지정을 요구하기 때문이다.(python, php, js는 그렇지 않다.) -> "타입 안전 + 코드 중복 제거(다양한 type 대응)" 두 마리 토끼를 잡고 싶다. 3. Generic의 특성 "..

1. LiveData란? An observable data holder class that is lifecycle-aware - 옵저버 패턴이 적용된 (=특정 대상을 관찰하고 변화를 인지하는) -> 최신화 - 생명 주기를 인식하는 (=메모리를 효율적으로 쓰는) 옵저버 패턴이 적용되면 아래 그림 처럼 대상(subject)을 관찰하고 대상(subject)의 상태가 변화했을때 이를 감지할 수 있다. 그 대상을 LiveData로 만들면 옵저버 패턴을 보다 쉽게 구현할 수 있고 UI의 생명주기에 따라서 생성/소멸한다. -> "생명주기가 onStarted, onResumed일때만 data를 update한다." 2. 사용법 1) LiveData 객체 생성 _ in ViewModel val score = Mutable..

1. UI & ViewModel (LiveData는 다음 시간에 다루기에 일단은 크게 두 분류로 나눈다.) UI - 자료를 UI에 표현 - 시스템이나 사용자가 보내는 이벤트를 수신 ViewModel - UI에 보여줄 data를 가지고 있다 UI에 전달 - 어떤 data를 보여줄지 판단(데이터에 대한 계산을 여기서 한다) (GameFragment의 예로 살펴보자) GameFragment는 data를 UI에 나타내준다. button이 클릭된 경우 Fragment는 이 사실을 인식하고 viewmodel에게 알린다. GameViewModel은 점수, 단어 목록, 현재 단어 등에 대한 데이터를 가지고 있다. gameFragment에서 신호가 오면 관련된 data를 처리하고 data를 변경한다.(ui를 참조하여 직..

1. MVP패턴이란? 하나의 디자인 패턴으로 M(model) / V(View) / P(Presnter) 계층으로 나누어서 개발하는 패턴입니다. 가장 큰 특징으로는 view 와 model 을 분리한다는 것입니다. 기존 mvc 패턴은 ativity 클래스 안에 뷰 관련 정보와 데이터 관련 정보를 함께 담아서 클래스가 굉장히 비대해지는 문제가 있었는데요 중간에 컨트롤 타워 역할을 하는 presenter 계층을 추가함으로써 ui정보와 data를 서로 다른 계층에 나누어 관리할 수 있게 되었습니다. 그 결과 ui 관련된 코드는 view 계층에 담기고 data 관련된 코드는 model에 담기게 됩니다. 2. 동작 순서로 보는 각 계층의 역할 1) view에서 사용자의 동작을 감지하고 presenter에게 actio..

1. MVVM이란? 기존의 MVP가 가지는 문제를 해결하고자 나온 모델입니다.. 기존 MVP 모델은 view와 presenter의 의존성이 강하다는 것이 문제였는데 MVVM은 "viewmodel은 view를 모르는 구조"로 설계함으로써 view와 viewmodel의 의존성을 느슨하게 만들었습니다. 2. MVP vs MVVM "ViewModel은 View를 모른다" 그림에서 볼 수 있듯이 가장 큰 특징은 mvp에서는 presenter에서 view를 참조하고 있는데 mvvm에서는 viewmodel이 view를 참조하고 있지 않습니다. 이 특징 덕분에 기존 mvp 패턴에서 presenter와 view간의 의존성이 높아져 발생할 수 있는 문제를 어느 정도 해결할 수 있게 해줍니다. '클래스간 의존성이 높아지면 ..

이 글은 생활코딩 자료구조 수업을 기초로 정리한 글입니다. opentutorials.org/module/1335 배열 1. 배열이란? : 데이터를 그룹핑해서 관리하는 자료구조 보통 group으로 나누는 행위는 보다 체계적인 관리를 위해서 진행합니다 블로그에 글을 쓸때도 카테고리 없이 글을 쓰면 나중에 글이 50개가 되고 100개가 되었을때 관리가 되지 않습니다. 하지만 카테고리를 나누어서 관리하면 보다 원하는 글을 빠르게 찾을 수 있고 체계적인 관리가 가능합니다. 2. Index 배열에서 각 요소는 index라는 값을 가지고 있습니다. index는 그룹화된 데이터 안에서 개별 데이터를 식별하게 해주는 역할을 합니다. 즉, index를 활용해서 배열의 데이터를 가져오고 저장할 수 있는 것입니다. (배열의 ..
추상클래스 vs 인터페이스 1. 정의 - 추상클래스 : 1개 이상의 추상메소드를 가진 클래스 - 인터페이스 : 모든 메소드가 추상 메소드인 추상 메소드 모음 2. 차이점 "사용 목적에 있어서 다릅니다." (핵심) 추상 메서드 - 부모 클래스의 기능을 이용 및 확장 인터페이스 - 구현 객체와 동일한 동작을 강제. 일종의 설계도와 같은 역할 +그 외 추상 메서드 - 클래스로 구체적인 로직이나 상태를 가질 수 있습니다. - 단일 상속 인터페이스 - 인터페이스로 구체적인 로직이나 상태를 가질 수 없습니다. - 다중 상속 가능 인터페이스와 다형성 인터페이스는 "메소드에 대한 정의를 먼저 하고 구현을 미루는 패턴"입니다. 이렇게 어떤한 행동에 대한 구체적인 구현을 나중으로 미루는 것을 추상이라고 합니다. 추상화를 ..