전체 글

전체 글

    [Sesac IOS] 38일차 TIL

    Leaned Realm DB 백업 1) .realm 파일 자체를 백업 앱에서 사용하는 DB 파일의 스키마와 복구할 파일의 스키마가 동일할 때 단순히 파일을 교체하여 쉽게 백업 및 복구가 가능함. 하지만 사용자의 앱 버전마다 스키마가 다를 경우 사용하는 DB의 구조가 각각 다르기 때문에 복구 시 충돌이 발생할 수 있음. 또한 백업한 데이터를 Realm이 아닌 데이터베이스에서 사용하기 어렵다는 단점이 있음. 2) Json으로 변환하여 백업 마이그레이션, 스키마 업데이트 등 DB 구조 변화에 유연하게 대응할 수 있으며 Realm외에 다른 데이터베이스 또는 다른 플랫폼에서 비교적 사용하기 편리함. 단, 개발 시간이 늘어날 수 있다는 단점이 있음. 파일 앱을 활용한 백업 및 복구 Zip 라이브러리를 사용해서 백..

    [Sesac IOS] 37일차 TIL

    37일차 수업 내용을 정리한 글입니다. Learned App Sandbox System 1) 개요 앱이 보호받는 영역(샌드박스) 안에서만 동작하도록 제한해서 보안을 유지하는 애플의 시스템 샌드박스 시스템으로 인해 설치된 앱은 각자 고유의 영역을 가지고 있으며, 기본적으로 자신의 영역 외에 다른 앱에 접근할 수 없고 외부 앱에서도 접근이 불가능함. 샌드박스는 크게 Bundle, Data, Cloud Container와 하위 디렉토리로 나뉨. 2) Bundle Container 프로젝트의 info.plist, resource(asset, font 등)가 포함됨. 컴파일 소스(.swift 파일)이 바이너리 형태의 실행 파일로 저장되고 Xib파일, 설치된 라이브러리에 대한 정보가 들어감. 3) Data Cont..

    [Sesac IOS] 36일차 TIL

    36일차 수업 내용을 정리한 글입니다. Learning Transaction 1) 개요 논리적인 작업 수행의 단위로서 DBMS에서는 사용자의 요청(쿼리)에 응답하여 데이터베이스에 접근하고 상태를 변환(CRUD) 시키는 상호작용의 단위를 의미함. 만약 작업이 도중에 중단되었을 경우 처음 상태로 돌아가고(roll back) 모든 작업을 마칠 경우 commit 된다. DBMS의 성능은 1초당 수행하는 트랜잭션의 수(TPS)로 측정됨. TPS : Transaction Per Second 2) 필요성 송금 과정에서 내 계좌에서 돈이 출금됐을 때 오류로 인해 작업이 중단되면 상대의 계좌에는 입금되지 않는 문제가 발생할 수 있음. 위 사례 뿐만 아니라 여러 클라이언트에서 동시에 DB 서버에 쿼리를 요청할 때 등 문제..

    [Sesac IOS] 34~35일차 TIL

    34~35일차 수업 내용을 정리한 글입니다. Learned DataBase 1) 개요 데이터를 가지고 있는 파일들의 집합체로, 수많은 데이터들이 모여서 구조적으로 저장된 저장소를 의미함. 회사의 인사 관리, 고객 관리 시스템 등에 대표적으로 활용됨. 2) DBMS (DataBase Management System) DB를 생성, 삭제, 수정하는 등 DB를 관리하기 위한 소프트웨어를 의미함. 대부분의 DB가 이 DBMS를 통해 생성되고 관리되기 때문에 DB와 그 의미를 혼용하기도 함. 계층형, 관계형, 객체관계형, NoSQL 등 다양한 종류의 DBMS가 존재하는데 RDBMS(관계형 데이터베이스 관리 시스템)이 가장 많이 사용됨. RDBMS (Relational DBMS) 1) 개요 저장된 데이터들 사이에 ..

    [Sesac IOS] 33일차 TIL

    33일차 수업 내용을 정리한 글입니다. Learned 타입 캐스팅 1) 개요 타입 캐스팅이란 인스턴스의 타입을 확인하거나 인스턴스를 같은 계층에 있는 부모 또는 자식 클래스처럼 사용하는 것을 말함. 인스턴스가 특정 프로토콜을 준수하는지 확인할 수도 있음. 타입 캐스팅된 인스턴스는 실제 인스턴스가 갖고 있는 멤버가 변하는 것이 아님. 본래 타입의 인스턴스는 메모리에 그대로 존재하고 특정 멤버에 대한 접근 여부가 변경되는 것임. 즉, 캐스팅은 실제 인스턴스나 값을 변경하는게 아니라 지정한 타입으로 취급하는 것임. 2) 종류 is 연산자를 사용해 어떤 타입의 인스턴스인지 확인할 수 있음. as 연산자를 사용한 타입 캐스팅은 업 캐스팅과 다운 캐스팅이 있음. 업 캐스팅 as 연산자를 사용해 서브 클래스 타입의 ..

    [Sesac IOS] 32일차 TIL

    32일차 수업 내용을 정리한 글입니다. Learned forEach와 for-in loop의 차이점 forEach 메서드에서는 continue, break 구문을 사용할 수 없음. forEach 메서드에서 return 구문은 현재 진행중인 블록을 빠져나갈 뿐 남은 반복 호출을 생략하거나 탈출할 수 없음. 커스텀 container view controller 만들기 컨테이너 뷰 컨트롤러는 다른 뷰 컨트롤러를 관리하고 보여주는 역할이며, 대표적으로 UINavigationController와 UITabBarController가 있음. 이때 컨테이너와 컨텐츠 뷰 컨트롤러 사이에 부모, 자식 관계를 형성하여 자식 뷰 컨트롤러에서 이벤트를 부모 뷰 컨트롤러에서 처리할 수 있음. 한 예시로 뷰 컨트롤러의 일부 영역에..

    [Sesac IOS] 31일차 TIL

    31일차 수업 내용을 정리한 글입니다. Learned 접근 제어 (Access Control) 1) 개요 특정 코드에 대한 접근을 소스파일 또는 모듈 단위로 제한하는 것 접근 제어를 통해 코드의 세부적인 구현을 감추고 필요한 만큼만 공개할 수 있음. 코드가 사용될 수 있는 범위를 직관적으로 나타낼 수 있고, 공개될 필요가 없는 불필요한 코드를 감춰서 오류를 방지하는 효과가 있음. 객체 지향 프로그래밍의 특성 중 하나인 은닉화 특성을 구현할 수 있음. 2) 모듈과 소스파일 접근 제어는 모듈과 소스파일을 기준으로 판단함. 모듈이란 import 키워드를 통해서 사용할 수 있는 코드 묶음의 단위를 의미하며 앱과 프레임워크를 하나의 모듈로 볼 수 있다. 소스파일은 모듈 안에 있는 .swift 같은 파일들을 의미하..

    [Sesac IOS] 30일차 TIL

    30일차 수업 내용을 정리한 글입니다. Learned 미디어 선택 UI 1) UIImagePickerController (iOS 14 이전) 사진 및 동영상 촬영, 유저의 갤러리에서 미디어를 선택하기 위해 제공되는 컨트롤러 UINavigationController를 상속받고 있음. 컨트롤러의 소스 타입에 따라 컨트롤러의 역할과 모습이 다르다. UIImagePickerController.SourceType .camera : 사진 및 동영상 촬영 .photoLibrary, .savedPhotoAlbum : 갤러리에서 미디어 선택 isSourceTypeAvailable(_:) 를 통해 디바이스에서 선택한 소스를 사용 가능한지 확인할 수 있다. iOS 14 이상 버전부터 갤러리에서 미디어를 선택하는 컨트롤러로 ..

    [Sesac IOS] 29일차 TIL

    29일차 수업 내용을 정리한 글입니다. Learned Authorization과 Privacy 1) 개요 iOS는 사용자의 민감한 정보(Privacy)에 접근할 때 사용자에게 권한(Authorization)을 요청함. 민감한 정보란 사용자의 연락처, 사진 앨범, 위치 등의 데이터를 의미함. 앱은 사용자에게 정말 필요한 최소한의 권한만을 요청하여 사용자와 신뢰를 구축함으로써 더 나은 사용자 경험을 제공할 수 있음. 점점 사용자가 구체적으로 앱을 통제할 수 있는 방향으로 발전하고 있음. ex) 위치 정보의 정확도 또는 "앱을 사용하는 동안에만 허용" 등의 옵션 2) Authorization Status 현재 사용자가 부여한 권한의 상태에 따라 권한 부여를 요청하거나 알럿을 띄울 수 있음. 사용자는 언제든지 ..

    [Sesac IOS] 28일차 TIL

    28일차 수업 내용을 정리한 글입니다. Learned iOS의 레이아웃 1) Frame Based Layout 수퍼뷰 안에서 뷰의 위치와 크기를 정보를 가지고 뷰를 레이아웃 서브뷰는 수퍼뷰 내부의 좌표(point)와 일정 크기의 너비와 높이(size)를 가짐. 수퍼뷰와 서브뷰 관계에서만 적용됨. 2) Auto Layout 다른 뷰 사이의 제약(Constraint)을 설정해서 뷰를 레이아웃 수퍼뷰와 서브뷰 뿐만 아니라 형제 뷰 관계에서도 적용 가능 3) Adaptive Layout Size Class, Trait Collection 등을 통해 모든iOS와 iPadOS 디바이스 크기에 적절히 대응할 수 있는 레이아웃 Size Class 디바이스의 규격을 regular, compact라는 두 클래스로 나누고 ..