일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 백준
- stanford
- 스터디
- GIT
- process
- 오늘의 색상
- 알고리즘
- UIKit
- flutter
- collectionView
- 조건문
- WidgetTree
- Swift
- 프로젝트회고
- 새싹후기
- SwiftUI
- 청년취업사관학교후기
- MVVM
- UserDefault
- 코딩테스트
- IOS
- Masil
- xcode
- 스위프트
- CS193p
- xml
- flutter #state # stateful #stateless
- colorofdays
- ImageSlider
- Today
- Total
목록전체 글 (105)
개발을 시작하는 이야기

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..

프로젝트에 스토리보드를 적용해서 제작하게 되면 앱의 화면을 보다 쉽게 확인하며 제작이 가능하기 때문에 앱의 관리가 용이하다는 장점이 있지만 프로젝트의 규모가 커지고, 복잡해지기 시작하면서 다양한 어려움이 발생하게 된다. 스토리보드와 깔끔한 사용법에 대해 알아보고 정리해보도록 하자. 1. 스토리보드? 스토리보드는 iOS 앱 화면 구성을 보다 직관적으로, 바로 보며 구성할 수 있도록 지원하는 기능으로 Xcode 4.2 버전부터 제공되고 있는 기능으로, 어떤 형태로 앱의 화면을 구성할지 특정 액션을 취했을 때 어떤 형태가 동작할 것인지 등의 앱 화면의 전체적인 흐름과 모양을 시각적으로 표현하고 확인할 수 있는 기능이다. 스토리보드를 사용하여 작업을 하게 되면 편집기 영역을 자유롭게 설정하며 보다 편하게 작업을..

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..

앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체 앱 구조의 뼈대로 모든 앱에는 반드시 하나 이상의 ViewController로 이루어져 있다. 주요한 데이터의 변화에 응답으로 뷰들의 콘텐츠들을 업데이트한다. 뷰와 함께 사용자에 응답하며 이벤트를 핸들링한다. 뷰들의 사이즈 재조정과 인터베이스들의 레이아웃을 관리 다른 객체들과 함께 앱을 구성한다. ViewController의 역할 1. 뷰 계층 관리 모든 ViewController마다 RootView를 지니고 있으며, 화면에 표시하기 위해서는 해당 RootView계층에 속해야 한다. View Controller의 종류 모든 뷰를 단독으로 관리 : UIViewController, UITableViewController, UICollectionVIew..

UserDefalts 키 - 값을 쌍으로 저장하는 인터페이스. 런타임 시 개체를 이용하여 기본 데이터베이스에서 사용하는 기본값을 읽어오기 때문에 필요할 때마다 데이터베이스를 열 필요가 없다. 대용량의 데이터보다는 최조접속여부, 자동 로그인 여부, 아이디, 환경설정에서의 설정 데이터 값과 같은 단일 데이터 등을 보관한다. CoreData 객체 그래프를 관리하기위한 FrameWork. SQLite와 같이 테이블을 이용하지 않고 객체를 생성하여 데이터를 운영하기 때문에 더 많은 저장공간과 메모리를 필요로 한다. 하지만 더 빠르게 데이터를 가져온다. Data Model을 생성한 후 Entity를 생성한다. SQLite 오픈소스로 Android, iOS, macOS에 기본적으로 포함되어있다. C언어로 작성되어있어..

처음 Xcode에서 시뮬레이터를 통해 빌드 테스트를 할 때는 신기하기만 했다. 테스트용 실기기를 갖고 있긴 하지만 실기기에 빌드하는 경우보다 시뮬레이터를 통한 빌드를 더 많이 하곤 했는데 점차 구현하는 기능이 다양해지고 복잡해지면서 시뮬레이터의 한계를 느끼기 시작했고, 시뮬레이터의 한계에 대해 정리해봤다. 일단 가장 먼저 체크하는 공식문서는 찾아볼 수가 없었다. iOS_Simulator_Guide 그마나 찾은 것도 Xcode9 버전에서 만료된 문서였고, Simulator의 Help를 통한 공식문서는 어째서인지 연결이 안 되어있다. 일단 경험한 것들과 인터넷에서 찾은 내용은 아래와 같지만 정확한 내용은 아니다. 일반 맥의 성능이 아이폰 성능보다 뛰어나기 때문에 앱의 성능, 메모리 사용량, 네트워킹 속도에 ..