일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스위프트
- 스터디
- UserDefault
- flutter
- xcode
- GIT
- 새싹후기
- MVVM
- 청년취업사관학교후기
- 오늘의 색상
- 프로젝트회고
- CS193p
- ImageSlider
- 코딩테스트
- Masil
- WidgetTree
- process
- collectionView
- 프로그래머스
- colorofdays
- 알고리즘
- UIKit
- 백준
- IOS
- flutter #state # stateful #stateless
- 조건문
- stanford
- Swift
- xml
- SwiftUI
- Today
- Total
목록IOS (44)
개발을 시작하는 이야기
얼마 전 면접을 보는 일이 있었는데 여러 질문 중 몇 가지를 정리해본다. Get과 Post는 둘 Http 메서드로 클라이언트에서 서버로 무언가를 요청할 때 사용되는 것은 동일하나 서로 조금은 다르다. Get? Get은 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드이다. 게시판의 게시물을 조회할 때 사용할 수 있다. Get을 통한 요청은 URL 조수 끝에 파라미터로 포함하여 전송되며, 이 부분을 쿼리 스트링(Query String)이라고 부른다. 방식은 URL 끝에 "?"를 붙이고 그다음 "변수명=값&변수명=값"과 같은 형식이 된다. 예를 들자면 다음과 같은 방식이다. www.example.com/show?key=valye&name=value http://kobis.or...
UserDefaylts는 앱에 사용자의 데이터를 키와 값을 쌍으로 저장하는 사용자의 기본 데이터베이스에 대한 인터페이스 방식이다. 런타임 시 개체를 사용하여 앱이 사용자의 기본 데이터베이스에서 사용하는 기본값을 읽기 때문에 값이 필요할 때마다 데이터베이스를 열 필요가 없어진다. 사용자의 정보 혹은 개시물의 정보와 같은 대용량의 데이터를 저장하는 것이 아닌 최초 접속 여부, 자동 로그인 여부, 아이디 저장, 환경설정의 설정 데이터 값과 같은 단일 데이터 등을 UserDefaults로 담아서 보관하게 된다. class UserDefaults : NSObject 기본 개체 저장 Swift안에 있는 float, Int, Double, Bool, URL 등 기본적으로 제공되는 자료구조와 NSData, NSStri..
이전 MVVM 패턴을 정리한 글에서 MVVM은 데이터 바인딩을 필수적으로 요구한다고 적었는데 이번엔 데이터 바인딩에 대해 정리해보는 시간을 갖도록 하자. 데이터 바인딩의 개념은 쉽게 말해 Model과 UI 요소 간에 싱크를 맞춰주는 것이다. View와 로직이 분리되어 있어도 한 쪽이 바뀌면 다른 쪽도 업데이트가 이루어져 데이터의 일관성을 유지하는 것이다. iOS에서 데이터 바인딩을 하는 방법은 다음과 같다. KVO Delegation Functional Reactive Programming Property Observer 이중에 내가 사용했던 방식은 Functional Reactive Programming으로, 가장 쉽고 가장 널리 사용되는 방식이라고 한다. Bond 같은 라이브러리를 사용한다면 쉽게 바..
MVVM 패턴 또한 MVC와 마찬가지로 애플리케이션에 주로 사용되는 디자인 패턴이다. 이름에서 알 수 있듯이 Controller를 대신하여 ViewModel을 갖고 있는데, ViewModel 또한 Controller처럼 View와 Model의 중계자 역할을 수행한다. MVC 관련 글은 여기 Model 데이터, 비즈니스 로직, 서비스 클라이언트 등으로 구성 실질적 데이터 View UI와 관련된 객체들로, 사용자에게 보이는 화면 유저 인터랙션을 받는 역할을 한다. iOS에선 ViewController까지가 View의 역할이라 할 수 있음. ViewModel ViewModel은 MVVM 패턴에서 핵심적인 비즈니스 로직을 담고 있는 코드의 계층이다. MVC 패턴의 Controller와 비슷한 역할을 하고 있다...
MVC 패턴 처음 개발을 시작했을 때는 그저 화면이 원하는 방식으로 돌아가게 만들기에 급급해서 모든 것들은 ViewController에 구현했다. 초반의 단순한 기능들을 구현하기에는 큰 무리가 없었지만, 통신을 시작히고 앱의 기능들이 복잡해지기 시작하니 문제가 발생하기 시작했다. 모든 것을 ViewController에서 핸들링 하기에는 코드가 복잡해지고 길어져 무리가 오기 시작했다. 그래서 처음 적용한 디자인 패턴이 MVC 패턴이다. 이 패턴은 iOS 뿐만 아니라 소프트웨어를 만들 때 고려되는 디자인 패턴이기 때문에 안드로이드 앱이나, 웹에서도 동일하게 적용된다. MVC는 세가지 컴포넌트의 약자이다. Model, View, Controller 애플리케이션에서 각 객채들은 위 세 가지 컴포넌트 중 하나의 ..
iOS에서 화면을 구성할 때 사용하는 대표적인 방식 세 가지는 Storyboard, Xib, code가 있다. MVC 패턴을 위해 뷰 코드와 컨트롤러를 분리하는 목적으로 만들어졌는데, 세 가지 중에서 XIB를 활용하여 Cell을 제작하는 것을 정리해본다. XIB 파일이란? Xcode Interface Builder의 약자로써 화면을 구성하는 클래스들을 XML 문법에 맞추어서 저장된다. 바이너리가 아닌 XML 형태로 저장하기 때문에 수정된 부분을 쉽게 알 수 있어서 소스코드로 관리가 가능하다. 수정을 하기 위해서는 XML문법을 맞춰서 수정해야 하지만 Xcode에선 Interface Builder를 제공을 해주기 때문에 그래픽 형태로 수정이 가능하다. NIB은 또 뭐야? Nextstep Interface B..
What is @main in Swift 모든 프로그램에는 항상 시작하는 진입점이 있으며 Swift도 예외는 아니다. @main은 스위프트 5.3 버전에서 구현된 범용적인 엔트리 포인트 기능이이다. 이전 버전에서는 앱 개발용 프로그램을 위해서는 @UIApplicationMain이라는 어트리뷰트로 엔트리포인트를 지정했다. import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { ... } //XCode 11(Swift 5.2)이전의 @UIApplicationMain import UIKit @main class AppDelegate: UIResponder, UIApplicationDelegate { ... }..
What is app thinning? App Store 및 운영체제는 사용자의 기기 및 운영체제 버전에 맞게 app delivery를 조정하여 최소한의 설치 공간을 사용할 수 있도록 iOS, tvOS, watchOS앱들의 설치를 최적화 한다. App thinning이라고 불리는 최적화를 통해 device의 기능 대부분을 사용하고 최소 디스크 공간을 차지하며 향후 Apple에 의한 업데이트들을 수용할 수 있는 앱을 만들 수 있다. 더 빠른 다운로드와 더 많은 공간은 더 나은 사용자 경험을 제공한다. Slicing (iOS, tvOS) 슬라이싱(Slicing)은 다양한 기기와 운영체제 버전에 대하여 여러 가지 앱 번들의 변형(variants)을 생성하고 전달하는 과정이다. 변형(variants)은 실행 가..
Swift의 ARC는 레퍼런스 카운트를 관리하여 메모리 누수를 방지하는 역할을 한다. 이때, 인스턴스끼리의 강한 순환 참조 문제를 해결하는 두 가지 방법이 있는데 weak reference와 unowned reference를 사용하는 것이다. Weak References weak references는 참조하는 인스턴스를 강하게 유지하지 않는 참조로 ARC가 참조된 인스턴스를 할당 해제할 수 있다. 할당 해제가 되면 ARC는 자동으로 약한 참조를 nil로 설정한다. 이렇게 약한 참조는 nil값이 들어갈 수 있기 때문에 상수가 아닌 옵셔널 타입의 변수로 선언되어야 한다. class Person { let name: String init(name: String) { self.name = name } var a..
ARC(Automatic Reference Counting) iOS는 앱의 메모리 사용을 추적, 관리하기 위해 ARC 기능을 사용한다. ARC는 Automatic Reference Counting의 줄임말로 참조 메모리 관리를 자동으로 해주는 기능을 뜻한다. 인스턴스가 참조되거나 참조 해제될 때 횟수를 카운팅 하고, 횟수가 0이 되면 인스턴스를 메모리에서 해제하는 방식 How ARC Works 클래스가 새로운 인스턴스를 생성할 때, ARC는 인스턴스에 대한 정보를 저장할 메모리 청크를 할당한다. 할당한 메모리 청크에는 인스턴스의 타입에 대한 정보, 인스턴스와 관련된 프로퍼티 값 등을 저장해둔다. 더 이상 인스턴스가 필요하지 않게 되면 자동으로 메모리에서 비우는 방식으로 메모리를 관리한다. ARC in A..