iyOmSd/Title: Swift 91

[Swift] SceneDelegate

AppDelegate가 궁금하다..!? 2020/08/20 - [iyOmSd/Title: iOS Think🤔] - iOS - App Life Cycle iOS - App Life Cycle 앱의 생명주기에 대해서 알아볼거에요 우선 iOS13을 기준으로 최신버전에는 SceneDelegate라는 파일이 생성되는게 보일거에요 새로운 개념이죠 다음에 알아보도록하구요! 지금은 AppDelegate 위주의 단 nsios.tistory.com 이번엔 SceneDelegate에 대해서만 볼거에요 iOS13 부터 새로생긴 개념이에요 이기능은 아이패드를 사용할 때 앱을 분할해서 여러개를 띄울 수 있죠?? 그기능이 생기면서 생긴 Delegate입니다!! 이렇게 말이죠! 앱과 다른 앱을 한 화면에 동시에..! 이게 새로생겼다..

iyOmSd/Title: Swift 2020.11.04

[Swift] WKWebView 앱 죽는 오류 현상

간단하게 프로젝트중 이슈를 적어보려고해요 프로젝트를 진행하면서 웹뷰를 쓰는데 일부 기기에서만 웹뷰접근시 앱이 죽는 현상을 발견했는데요!! 모든 시뮬레이터기기로 테스트했을 때 죽지않아서 몰랐었어요... 에러난 경우 디버그를 하는 방법은 1. 에러나는 기기를 가져와서 직접 빌드한다 2. 파이어베이스를 사용한다 만나기 쉽거나 가까이있으면 1번이 더 빠르고 편할 수도 있지만 저 같은경우는 2번 방식이였구요 혹시 웹뷰를 쓰시는 분이면 이런경우가 있을지모르니 아래처럼 꼭 추가해줘야 할 것 같아요 Fatal Exception: NSInvalidUnarchiveOperationException Could not instantiate class named WKWebView because no class named WKW..

iyOmSd/Title: Swift 2020.10.25

[Swift] Firebase Crashlytics dSYM 누락 업로드

비정상 종료를 확인하기 위해서 사용하기 위해서 사용하는 녀석이에요 그런데..! 자동으로 올라가질 않을 때가 있어서... 수동으로 올려줘야 할때가 있어요.. ㅠ AppStore Connect에 들어가서 활동내역메뉴에서 해당하는 빌드버전을 누르고! 밑에보면 dSYM다운로드가 있어요 우선 이거를 들고오세요!! 자동으로 다운로드에 저장이될거에요 이제 업로드하는 명령어를 입력해야해요 먼저 터미널을 열고 저는 프로젝트경로위치에서 시작했구요 Pods/FirebaseCrashlytics/upload-symbols를 써주고 -gsp 를 추가하고 GoogleService-Info.plist가 있는 위치를 써주고 -p ios 를 추가하고 appDsyms가 있는 위치를 입력해주세요 그리고 엔터를 하면!! 업로드 성공 !! 파..

iyOmSd/Title: Swift 2020.10.25

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

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

iyOmSd/Title: Swift 2020.10.23

[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

[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

[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

[Swift] App Life Cycle

앱의 생명주기에 대해서 알아볼거에요 우선 iOS13을 기준으로 최신버전에는 SceneDelegate라는 파일이 생성되는게 보일거에요 새로운 개념이죠 다음에 알아보도록하구요! 지금은 AppDelegate 위주의 단순한 App의 생명주기에 대해서 알아보려고해요 아래그림은 왼쪽은 AppDelegate 오른쪽은 SceneDelegate가 있는상태일때 생명주기에요 예전그림이 변경어서 살짝 헷갈리지만 기본적인 개념은 같아요 예전그림은 이런 모습을 하고 있엇구요... 아무튼! 당연히 변경된 최신거를 참고해야겟죠??! 각 상태를 정리해볼게요 Active - 이벤트를받고, 일반적으로 앱이 실행되는 상태에요 Inactive - 앱의 상태변화시에 거치게되구요, 이벤트는 받지않는 상태에요 (Background로 전환시 거치는..

iyOmSd/Title: Swift 2020.08.20

[Swift] Image Cache처리 (NSCache, FileManager)

서버에서 이미지를 불러올때 이미지 URL을 받고 다시 해당 URL로 통신을 하는 식으로 이미지를 받아온다면 비효율적이겠죠?? 또한 이미지크기도 크다고하면 더욱 좋지 않을거같아요..! 그래서!! 효율적인 캐시처리에 대해서 알아볼거에요 캐시란 기기 안의 임시 저장소를 뜻하는거에요 임시 저장소를 통해서 이미지를 넣어두고 빠르게 보여줄 수 있고 효율적인 통신을 할 수 있어요 캐시에는 두 가지 종류가 있어요 memory cache - 기기를 끄면 사라져요 이 캐시기능을 스위프트에서 지원을 해주죠 NSCache 를 사용해서 구현 할 수 있어요 disk cache - 기기안에 저장 되어있고 껐다 켜도 남아 있어요 이 부분은 경로에 따라서 앱을 삭제할때 사라지게할수도, 앱을 삭제해도 남아있게할수도 있을거같아요 User..

iyOmSd/Title: Swift 2020.08.09