전체 카테고리 225

[Swift] iOS 파일구조 알아보기 Sandbox, Bundle - 파일시스템(APFS)

iOS의 파일시스템(APFS)은 기본적으로 앱마다 별도의 파일을 생성하고 Sandbox안에서만 접근이 가능해요 따라서 외부로부터 접근에 보호되서 조작되는것을 막는 보안형태죠 그렇기 때문에 옛날에는 특정 앱에서 만든 문서는 특정 앱을 통해서만 볼수 있었지만 지금은 다행이도 Files앱을 통해서 볼 수 있죠 Sandbox를 사용하기때문에 앱과 시스템이 상호작용이 필요할 때 시스템 접근권한을 앱이 받아오는 방식이에요 사용자들은 기본적으로 user domain에 속해서 대부분의 작업을 수행하게 되요 구조를 한번보려고 시뮬레이터의 폴더를 한번 탐색해봤어요 시뮬기기를 따라가면 Containers라는 폴더가 컨테이너를 구분하는거같구요 Data Container를 접근해서 보면 각 앱마다 파일이 구현된다했엇죠?? 5F..

iyOmSd/Title: Swift 2020.10.23

[WITH] 여행 동행 플랫폼 개발

동아리에서 처음 개발한 건 2019.12.21 ~ 2020.01.04(2주) 동안 개발했고 만들어진 프로젝트의 완성도가 너무 떨어지고 개선하는 거보다 새로 만드는 것이 더 빠르다고 생각했어요 그래서!! 새로 다시 개발하면서 2020.01.27 ~ 2020.04.27 최초 배포가 되었구요 지금(2020.10.17일 기준) 계속 조금씩 기능 개선도 하면서 디자인도 개선시키면서 개발하고 있는 프로젝트예요 많은 것들을 처음으로 경험해서 더 기억 남는 프로젝트예요 제가 처음으로 다른 분야의 사람들과 협업을 진행한 프로젝트이고 iOS 개발을 시작하고 처음으로 서비스를 배포에 성공해서 앱스토어에 올린 앱이기 때문이에요 프로젝트를 하면서 협업의 중요성을 느꼈던 것 같아요 제가 할 수 없는 부분, 필요한 부분을 다른 사..

[Swift] View Life Cycle UI업데이트 관련 함수

UI가 업데이트되는 주기를 알아볼 거예요 일반적으로 뷰가 생성될 때 알고 있는 주기는 loadView viewDidLoad viewWillAppear viewDidAppear 많이 들어 봤을 거예요 여기서 더 자세하게 살펴볼 거예요 저 사이에는 숨겨진 동작들이 있어요 파란 배경 - 오버라이드 가능 빨간 배경 - 오버라이드 불가(뷰 컨트롤러 기준 오버라이드 불가) loadView viewDidLoad viewWillAppear ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ Constraints ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ updateConstraints intrinsicContentSize updateViewConstraints ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ Layout ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ viewWillLayoutSubviews la..

iyOmSd/Title: Swift 2020.10.16

[iOS] WWDC16 Swift Performance - 성능 이해하기

Swift에서 사용하는 타입들은 값타입, 참조타입으로 나뉘고 그에따라 Stack, Heap에 구분되서 저장되요 값타입이고 Stack에 저장되는 Struct 참조타입이고 Heap에 저장되는 Class Struct 와 Class 아무거나 쓰면 안되나여..? ➡️ Swift에는 Stack과 Heap메모리 공간이 존재 ➡️ 값복사는 Stack에 참조복사시 Heap 메모리 사용 Struct 상속이 필요없는경우 Thread에서 Safe한값을 사용할 수 있음(복사한 값은 다른 변수에 전혀 영향을 주지 않음) 참조가아닌 복사를 원할 때 연관된 값을 하나의 데이터 타입으로 만들 때 Class Value보다 Identity가 중요한경우 -> 모든 변수에서 같은 상태갖고있음 상속이 필요한 경우 다형성을 이용한 타입캐스팅이 ..

[RxSwift] bind, subscribe, drive

Rx를 사용하다보면 헷갈리는 용어들과 언제 사용해야 맞는 건지 등등 사용법은 비슷한데 다른 API들이 있어요 우선 사용하면서 느낀게 bind, subscribe, drive가 있었어요 각 개념들을 정리해보고 생각해 볼까요? 제일 기본적인 subscribe 되게길죠..? ㅎ... 대부분 구독한다라는 뜻으로 알고 사용해요 한 대상이 있고 subscribe를 하면 그 대상의 상태가 변하면 그 값을 받아 와서 처리할 수 있는 개념이에요 구독대상의 변하는 다음값, 에러시, 끝날시의 때를 알고 코드를 구현 할 수 있죠 다음은 bind 내부적으로는 subscribe를 사용하고 있네요 onNext만 매개변수로 받아서 사용하구요 따라서 subscribe에서 error컨트롤을 못 할 것 같죠?? 단순히 새로 생성되는 값을..

[Data Structure] Trie를 이용한 자동완성 구현

오늘은 이렇게 검색어를 치면 그 단어를 포함한 단어를 보여주는 자동완성을 구현해볼거에요 구현 하는 방법은 여러가지가 있을 수 있겟지만! 우선 방대한 리스트가 있거나 유동적인 데이터라면 서버와 통신을 통해서 자동완성을 구현하는 방법을 택하는게 좋을 것 같다는 생각이 들어요 이 게시글은 적당량(?)의 데이터를 가지고 자동완성을 구현하는거에요 Trie...?? Trie가 뭔지 알고 가야겠죠? Trie 트리 자료 구조 이구요 아래 그림과 같이 생겼어요 (빨간점은 단어가 끝났음을 의미해요, 아래에 이 점이 왜 있는지 이유가 나와요) 문자열을 탐색할 때 단순하게 하나씩 비교하면서 탐색을 하는것보다 훨씬 효율적 빠르게 탐색이 가능하다는 장점 각 노드에서 자식들에 대한 포인터(참조)들을 배열로 모두 저장하고 있다는 점..

[Swift] Realm DB

iOS는 많은 데이터베이스들이 있어요 Realm SQLite FMDB CoreData 이 중에서 어떤 것을 골라서 써야 하나 생각하게 되죠 이 게시글은 Realm에 대해 초점을 더 두고 다른 것들은 간략하게 언급해볼게요!! SQLite는 기본내장 프레임워크라 따로 설치가 필요가 없어요 그렇기 때문에 DB의 많은 부분을 접근하고 조작할 수 있어요 여러 프로세스와 스레드로부터 안전해요 FMDB는 SQLite는 Objective-C로 구성되어있는데 이를 wrapping 해서 Swift에 맞게 사용할 수 있어요 CoreData는 데이터베이스가 아니에요! SQLite를 저장소로 쓰지만 프레임워크 자체는 데이터베이스가 아니에요 객체 그래프를 관리하기 위한 프레임워크라고 할 수 있겠네요 따라서 객체에 중점을 두고있어..

iyOmSd/Title: Swift 2020.09.17

[Swift] MarkUp Overview Documentation 작성하기 (설명문서작성)

이 기능의 명칭이 MarkUp Overview라고 하는 것 같은데 함수나 타입에 마우스를 가져다대고 opt(옵션) + (클릭) 을하면 아래처럼 설명창이 뜨는것을 본적이 있죠?! 이번에는 간단하게 이 문서를 작성하는 방법을 해볼거에요 그전에!!! MarkUp??? MarkDown??? 둘의 차이가 뭔지 궁금해졌어요 MarkUp 마크(Mark)"로 둘러싸인 언어 혹은 "태크(Tag)"로 둘러싸인 언어 문서나 데이터의 구조를 명기하는 언어 라고해요 대표적으로 데이터 표현언어인 HTML과 데이터 교환언어인 XML이 있죠 MarkDown 작성한 텍스트를 MarkUp으로 HTML로 변환해주는 언어라고해요 읽고쓰기 쉽게 만들어져있어요 마크를 인식하고 HTML로 변환해줘요 예를들어 SNS에서 #안녕 이라고 친다면 자동..

iyOmSd/Title: Swift 2020.09.09

[iOS] UIAlertController 참조과정

순환참조가 일어날것 같은 상황에 대해서 알아볼건데요! alert의 handler를 추가할 때 보면... alert의 action은 클로저인데 이 상황에서 self를 참조하면 개념상 순환참조가 일어날거 같잖아요? 우선 결론부터 말씀드리면 순환참조는 일어나지않아요!! 아무리 alert를 켯다껏다해도 메모리가 쌓여서 앱이 죽은 적이 없잖아요?? 한 번 생각해 볼까요!! let alert = UIAlertController(...) let action = UIAlertAction(...) { self.view = ... } alert.addAction(action) present(alert, animated: false, completion: nil) VC에서 alert를 생성해주고, action도 구현해서 a..

[Swift] Setting Bundle 앱 테스트환경

설정에 관련된 화면을 만들어서 테스트할 때 유용하게 사용할 수 있는 환경을 만들어볼거에요 UserDefault를 변경하여 테스트해보고 싶은경우 유용하기도해요 파일을 하나 만들어볼게요 Settings Bundle파일을 만들어주고 plist가 하나 생길거에요 이상태에서 바로 앱을 빌드하고 저 정보는 설정창에 있어요!! 설정창으로 들어가볼게요!! 들어가서 자신이 만든 앱의 설정을 들어가면 아래와 같이보여요 타입은 여러가지가 있어요 자세한건 아래 개발자문서를 참고하구요 developer.apple.com/library/archive/documentation/Cocoa/Conceptual/UserDefaults/Preferences/Preferences.html#//apple_ref/doc/uid/10000059..

iyOmSd/Title: Swift 2020.08.26