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

오늘은 지난번에 이야기한 대로 Process의 구조에 대해서 좀 더 알아보려고 한다. Code 프로그래머가 작성한 소스 코드가 기계어 형태로 저장된다. 기계어라 함은 컴퓨터가 읽을 수 있는 가장 밑단의 언어로 0과 1로 이루어진 언어이다. 컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장된다. Data 전역변수와 static 변수가 저장되는 공간이다. 프로그램 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리가 해제된다. 실행 도중 변수 값이 변경될 수 있기 때문에 Read-Write로 저장된다. struct Profile { static let country = "Korea" } var name: String? var age: Int? func fetchData(..

이전에 그럼 우린 스레드와 프로세스에 대해서 알아봤다. 프로세스는 실행될때 운영체제로 부터 각각 독립된 메모리 영역을 할당받지만 스레드는 프로세스 내에서 스텍 영역만 별도로 할당받고 부모 프로세스의 Code, Data, Stack, Heap 영역은 공유하게 된다. 따라서 프로새스 내에서 자식 스레드들은 서로 주소 공간이나 자원을 공유하면서 실행될 수 있다. (스텍은 서로간의 데이터 공유가 수월하지만 프로세스간의 데이터 공유는 그렇지 않다고 한다. 하지만 불가능 한것은 아니라고 함) 그럼 이젠 멀티 스레드에 대해 알아보자 멀티스레드는 하나의 어플리케이션을 여러개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것이다. 만일 단일 스레드로 네트워크나 데이터베이스 통신과 같은 긴 작업을 수행..

지금의 내 앱은 싱글스레드만 사용하고 있다. 하나의 스레드만 사용해서 덜 복잡하고, 단순하게 작성할 수 있었지만 앱의 사용자 경험은 더 낮아졌다. 앱의 최초 실행 시 데이터를 저장하는데 소요되는 시간은 1분 정도 걸리는 것이 무척 불편한 편이고, 포트폴리오로 제출할 때 심각한 마이너스 요소라고 생각해서 이를 멀티스레드로 변경하려고 한다. 그럼 일단 싱글 스레드, 멀티 스레드 라고 하는데 스레드가 뭘까? 일단 모르는 건 공식문서부터 보라고 배웠으니 공식문서를 살펴보자. [공식문서 : Thread] A thread of execution. 스레드는 긴 작업을 수행해야 하지만 애플리케이션의 나머지 실행을 차단하고 싶지 않을 때 특히 유용하다. 특히 스레드를 사용하여 사용자 인터페이스 및 이벤트 관련 작업을 처..

우리의 바람 잘날 없는 Xcode는 오늘도 말썽이다. 얼마 전에 테스트 기기가 소프트웨어 업데이트를 한다고 해서 아주 잠깐 '뭐 하던가 말던가' 하며 멍 때리다 정신을 차렸을 땐 이미 한창 업데이트 중이었다. 하... 그리고 역시나 iPhone 업데이트 이후 Xcode에서 iPhone으로 실기계 빌드를 하면 다음과 같은 애러가 발생했다. This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need to restart your mac and device in order to correctly detect compatibility...

앱을 구동하면 데이터를 로딩하다가 알림 창과 함께 강제 종료가 되는 오류를 해결하려고 다시금 프로젝트를 열고 뒤적이다 원론적인 오류는 해결하지 못하고 Uncategirized 오류만 해결한채로 오류의 원인을 찾으며, 지도 탭을 업데이트하기로 했다. Uncategirized 오류 해결 : [Error]Uncategorized 이미 문화유산에 대한 Annotation들은 사용하고 있지만 Annotation을 선택하면 아무 효과가 없었다. 초기 Storyboard로 작성했을 때는 containerView 효과를 주려고 했었으나, 이당시 PickerView를 containerView로 작성을 해주어서 하나의 Storyboard에 두 개의 ContainerView를 컨트롤하기가 힘들어서 잠시 중단을 했었다. 후..

문화유산 앱의 지도 텝에서는 문화유산의 지역 정보를 가져와서 지도에 표시해주는 Annotation을 사용한다. 그런데, 문화유산의 수가 만 육천 개가 넘어가기 때문에 지도에 항상 모두를 표시해줄 수는 없기에 지역을 필터링해서 일부분만 보여주기로 하였다. 일단은 필터를 선택하는 filterButton과 PickerView를 키보드 영역에 보여주기 위해 빈 TextField를 제작했다. 을 MapView에 만들어 주었다. let filterButton: UIButton = { let button = UIButton() button.setImage(UIImage(named: "plus"), for: .normal) button.imageEdgeInsets = UIEdgeInsets(top: 12, left: ..

앱이 업데이트를 지속하는 동안 예상치 못한 에러가 발생했다. 앱이 최초 실행 시 XML 데이터를 Realm에 저장하는 도중 앱이 알람 허용 창과 함께 종료돼버리고 만다. 그렇게 종료가 되면, 문화유산의 데이터를 제대로 받지 못한 상태로 종료되고 만다. 앱스토어나 TestFlight을 통해 앱을 받아 설치하면 애러가 발생하며 종료되는데, Xcode를 통해 빌드하면 문제없이 실행된다. 이 문제는 1.0.4 업데이트 이전에는 발생하지 않던 애러였다. 알람 요청 메시지를 띄우는 Cloud Messaging는 그보다 이전에 추가했었지만, 그때는 이런 문제가 발생하진 않았다. 이번 1.0.5 혹은 1.0.4 버전의 업데이트에서 문제가 발생했다고 생각이 들었다. 현재 Xcode의 오류 메시지는 1개의 이슈를 갖고 있..

앱을 디자인할 때 가로모드 까지는 디자인 하지 못해서 세로 모드로 고정하기로 했다. 세로 모드 고정은 과정 진행 중 가볍게 다루고 넘어갔었는데, 일단은 Xcode의 프로젝트 설정 -> Targets -> General -> Deployment Info -> Device Orientation에서 설정할수 있다. Portrait 기기의 방향이 어느 방향이든, 앱의 실행 방향이 세로 방향으로 고정된다. Upside Down 앱의 실행 방향이 180도 변경할 수 있다. Landscape Left, Right 앱의 실행 방향이 왼쪽 또는 오른쪽으로 변경할 수 있다. 하지만, 이렇게 설정을 했음에도 불구하고 휴대폰을 가로모드로 두고 앱을 실행하는 경우 앱이 강제 종료되는 현상이 발생했다. 이런 경우를 방지하기 위해..

오늘은 신나게 돈을 쓰는일을 하러간다. 앱 스토어에 내가 만든 앱을 등록하기 위해서는 필수인 앱 스토어에 개발자 등록을 하려고 한다. 일단 기본적으로 앱스토어 개발자 등록을 위해서는 Apple의 계정이 필요하다. 나는 예전 아이폰을 쓰면서 미리 만들어둔 계정이 있지만, 계정이 없다면 아래 사이트에서 계정을 만들어주면 된다. Apple ID Your Apple ID is the account you use for all Apple services appleid.apple.com 그리고 개발자 계정 등록은 아래 사이트에서 진행하게 된다 Apple Developer Program - Apple Developer iPhone, iPad, Mac, Apple Watch 및 Apple TV용 App Store에서 ..

SearchController func setSearchBar() { searchController = UISearchController(searchResultsController: nil) searchController.searchBar.placeholder = "숭례문" searchController.hidesNavigationBarDuringPresentation = false searchController.searchResultsUpdater = self self.navigationItem.searchController = searchController self.navigationItem.hidesSearchBarWhenScrolling = false } 나는 위의 방식으로 ViewControll..