일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩테스트
- 스터디
- flutter
- Swift
- 오늘의 색상
- ImageSlider
- Masil
- 조건문
- WidgetTree
- process
- 프로젝트회고
- 프로그래머스
- 스위프트
- UserDefault
- 청년취업사관학교후기
- 새싹후기
- colorofdays
- xcode
- flutter #state # stateful #stateless
- GIT
- MVVM
- SwiftUI
- 백준
- UIKit
- stanford
- collectionView
- 알고리즘
- xml
- CS193p
- IOS
- Today
- Total
목록개발 이야기 (93)
개발을 시작하는 이야기
UIkit 역시 Foundation과 마찬가지로 Framework로 iOS와 tvOS에 들어가는 앱을 빌드하는데 필요한 핵심 오브젝트(core object)를 지원한다. 애플의 통합 개발 환경인 Xcode에서 프로젝트를 생성해서 개발을 시작하는데, Xcode는 UI 기반으로 앱을 빌드한다. UI의 요소가 오브젝트로써 가능하며 UIButton, UILabel, UITableView 등이 이에 속한다. 이런 오브젝트들의 인터렉션이나 콘텐츠 요소를 UIKit이 지원하는 방식이다. 대부분의 어플리케이션은 당연히 UIKit에 의존할 수밖에 없지만 제공하는 기능이 다양하고 커스텀이 가능하기 때문에 수없이 많은 사용자 경험을 제공할 수 있게 된다. 필수 요소 UIKit이 사용된 어플리케이션은 다음 두 가지 요소를 필..
SwiftUI를 UIKit과 비교를 했지만 UIKit에 대해서는 형식적으로만 알고 있고 실제로 이게 어떻게 동작하는지는 알지 못했기 때문에 Foundation 그리고 UIKit에 대해서 알아보려고 한다. iOS 개발을 처음 시작하면 가장 처음 마주하게 되는 프레임워크는 Foundation이다. 일단 공식문서부터 살펴보자면 데이터의 저장, Text처리, 날짜 및 시간 계산, 정렬 및 필터, 네트워킹을 포함한 앱 기능과 Framewoks의 기본이 되는 Framewok라고 한다. 사실상 우리가데이터 타입을 지정하거나 네트워킹 같은 App에서 기본적인 기능을 구현하기 위해서는 필수적으로 import 되어야 하는 Framework이고, 그래서 새로운 Swift파일을 만들면 기본적으로 Foundation이 impo..
이제 막 Swift 코딩에 익숙해지려고 하는 찰나 너무나도 UIKit에 익숙해져 있지만 새로 나온 SwiftUI도 알아야 하기 때문에 SwiftUI에 대한 공부를 시작해볼까 한다. SwiftUI는 2019 WWDC에서 처음 소개되었는데 기존의 UIKit을 이용한 개발과는 상반된 개념을 갖고 있다고 한다. 기존에는 스토리보드를 활용하여 화면의 구축과 흐름을 구성하고, ViewController에서 로직을 구현했다면, SwiftUI에서는 Swift 언어만으로 사용자 인터페이스를 구현할 수 있게 되었다. 물론 기존에도 가능은 했지만 더 간편하고 속도도 빨라졌다. SwiftUI의 특징 선언적 구문(Declarative syntax) 단순하면서도 직관적인 구문을 이용하여 화면을 구성할 수 있게 해준다. 기존 U..
앱이 업데이트를 지속하는 동안 예상치 못한 에러가 발생했다. 앱이 최초 실행 시 XML 데이터를 Realm에 저장하는 도중 앱이 알람 허용 창과 함께 종료돼버리고 만다. 그렇게 종료가 되면, 문화유산의 데이터를 제대로 받지 못한 상태로 종료되고 만다. 앱스토어나 TestFlight을 통해 앱을 받아 설치하면 애러가 발생하며 종료되는데, Xcode를 통해 빌드하면 문제없이 실행된다. 이 문제는 1.0.4 업데이트 이전에는 발생하지 않던 애러였다. 알람 요청 메시지를 띄우는 Cloud Messaging는 그보다 이전에 추가했었지만, 그때는 이런 문제가 발생하진 않았다. 이번 1.0.5 혹은 1.0.4 버전의 업데이트에서 문제가 발생했다고 생각이 들었다. 현재 Xcode의 오류 메시지는 1개의 이슈를 갖고 있..
얼마 전 면접을 보는 일이 있었는데 여러 질문 중 몇 가지를 정리해본다. Get과 Post는 둘 Http 메서드로 클라이언트에서 서버로 무언가를 요청할 때 사용되는 것은 동일하나 서로 조금은 다르다. Get? Get은 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드이다. 게시판의 게시물을 조회할 때 사용할 수 있다. Get을 통한 요청은 URL 조수 끝에 파라미터로 포함하여 전송되며, 이 부분을 쿼리 스트링(Query String)이라고 부른다. 방식은 URL 끝에 "?"를 붙이고 그다음 "변수명=값&변수명=값"과 같은 형식이 된다. 예를 들자면 다음과 같은 방식이다. www.example.com/show?key=valye&name=value http://kobis.or...
새로운 토이 프로젝트를 제작해보기 위해 새로운 프로젝트 파일을 만들고 기본 작업을 시작했다. 코드 베이스로 만들기 위해 SnapKit을 연결하고, 프로젝트 파일과 Info.plist에서 각각 스토리보드를 삭제해주고 SceneDelegate의 scene(_:, willConnectTo:, options:) 메서드에도 설정을 마쳤는데 이상하게 빌드하면 아래와 같은 에러 메시지가 발생했다. Command Ld failed with a nonzero exit code 가장 먼저 들었던 생각은 내가 새로운 프로젝트를 시작한게 오랜만이라 Humen Error가 발생했구나 싶어서 과정을 다시 되짚어봤지만 딱히 초기 설정들 뿐이라 잘못 설정하는 것보다는 무언가를 놓쳤나 싶어서 다시 봤었다. SnapKit도 재설치 헤보..
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 애플리케이션에서 각 객채들은 위 세 가지 컴포넌트 중 하나의 ..