본문 바로가기
iOS File System = SandBox 구조 샌드박스(Sandbox)란 직역하면 모래통인데, 어린아이를 보호하기 위해 이 샌드박스 내에서만 놀도록 하는 의미에서 유래된 보안 모델이다. 보안을 위해서 앱을 설치할 때 운영 체제는 자동으로 해당 앱에 대한 샌드박스를 만듭니다. iOS는 기본적으로 앱마다 별도의 파일을 생성해서 공유되지 않도록 하고 외부로부터 들어온 접근에 대해서 보호되는 영역으로 시스템이 부정적으로 조작되는 것을 막는 보안 형태를 갖고있다. 하나의 앱은 하나의 샌드박스 내에서만 놀 수 있는 것. 즉, 샌드박스는 파일, 환경설정, 네트워크 리소스, 하드웨어 등에 대한 앱의 접근을 제한하는 세분화된 제어 집합, 커널 수준에서 시행되는 접근 제어 기술 왼쪽 그림처럼 앱이 샌드박스화 되지 않는다면 앱은 실행하는 사용자의 모든 권한을 갖게되고 .. 2022. 3. 4.
Frame-base layout vs Auto layout Frame-Base Layout 사각형 뷰를 그릴때 좌표와 사이즈를 이용하여 뷰를 정의하는 방법 예를들어 뷰는 "좌표 (20, 20)에 위치하고 폭은 120, 높이는 80을 가지고 있다." 라고 정의를 하면 정의한 좌표와 사이즈에 따라서 뷰가 그려진다 단말기의 해상도에 따라 뷰의 외부 여백이 달라지게 된다. Auto layout 뷰의 크기와 위치를 constraints에 의해서 동적으로 계산해주는 레이아웃 뷰를 정의할때 "어느 뷰로부터 어느만큼 떨어져있다."라고 불리는 제약사항(constraint)을 정의해준다. Auto Layout의 가장 큰 장점은 여러 해상도를 유연하게 지원할 수 있다는 것. Auto Layout의 경우에는 제약사항(constraint)을 걸어두면 해상도가 작은 단말기든, 높은 단말.. 2022. 3. 2.
translatesAutoresizingMaskIntoConstraints 속성 translatesAutoresizingMaskIntoConstraints A Boolean value that determines whether the view’s autoresizing mask is translated into Auto Layout constraints. If this property’s value is true, the system creates a set of constraints that duplicate the behavior specified by the view’s autoresizing mask. This also lets you modify the view’s size and location using the view’s frame, bounds, or center p.. 2022. 2. 23.
Main Run Loop & Update Cycle 이 포스트는 view, layout 업데이트 메소드를 정리하는데 필요한 연관지식을 먼저 설명을 하고 view, layout 업데이트 메소드를 설명할 예정. 순서는 다음과 같다 1. Main Run Loop 2. Update Cycle 3. constraints 업데이트 4. layouts 업데이트 5. display 업데이트 6. Drawing Cycle 1. Main Run Loop 앱이 실행되어 시스템에서 일어나는 프로세스들을 https://yongminlee26.tistory.com/204 에 정리했었다. 앱이 실행되면 UIApplication 객체는 유저가 일으키는 이벤트들을 처리하는 프로세스 Main Run Loop를 실행 하여 유저로부터의 input 이벤트를 해석하고 그에 상응되는 애플리케이션.. 2022. 1. 24.
Non-Escaping Closure 와 Escaping Closure Non-Escaping 클로저는 함수의 인자로 전달됐을 때, 함수의 실행이 종료되기 전에 실행되는 클로저. Escaping 클로저는 클로저가 함수의 인자로 전달됐을 때, 함수의 실행이 종료된 후 실행되는 클로저. Non-Escaping 클로저 func runClosure(closure: () -> Void) { closure() } 클로저가 실행되는 순서를 보면 클로저가 runClosure() 함수의 closure 인자로 전달됨 함수 안에서 closure() 가 실행됨 runClosure() 함수가 값을 반환하고 종료됨 이렇게 클로저가 함수가 종료되기 전에 실행되기 때문에 closure는 Non-Escaping 클로저이다. Escaping 클로저 func makeRequest(_ completion: @.. 2021. 12. 28.
접근제어, Access control Access Control, 접근 제어 다른 소스파일 및 모듈의 코드에서, 코드의 일부에 대한 액세스(접근)을 제한 Swift 접근 제어 모델은 모듈 및 소스파일의 개념을 기반으로 한다. 접근제어를 통해 객체 외부에서 객체내의 자료로의 접근을 제한하고 데이터를 수정,조작하는 동작은 내부에 두고 접근(getter),설정(setter)하는 메소드로 결과만 받도록 하는 객체의 은닉화를 가능하게 해준다 모듈 코드 배포(code distribution)의 단일 유닛 Xcode의 각 빌드 대상 ( 예 : 앱 번들 또는 Framework )은 Swift에서 별도의 모듈로 처리 소스파일 모듈 내의 단일 Swift소스 코드 파일 (사실상 앱 또는 Framework내의 단일 파일) Access Levels, 접근 레벨 o.. 2021. 12. 28.