Setting
새해를 맞이하여 그동안 했던 개발내용들을 정리해서 이력서로 다시 정리하였다.. 그동안의 개발을 토대로 전문성을 갖춘 iOS개발자가 되겠다.. 오늘도 공부한 메모를 남긴다
library, Framework 차이점
- Cocoa Touch Framework = System view
Text Views
Contorls
Content Views
Container Views
Bars
이 다섯가지는 UIKit Framework를 통해 제공
----------- Layout
- Frame-Based Layout
특정 뷰의 위치와 크기를 나타냄 다양한 프레임을 제작하기 위해 Auto resizing mask가 나옴
- Auto Layout
Frame-Based Layout과 Auto resizing mask를 대체하기 위해 나옴, 이전 두개가 완전히 사라지지는 않음
UI를 구성하는 뷰의 크기나 위치를 다른 요소와의 관계를 나타내는 특별한 규칙을 통해 자동으로 계산, 배치하는 기술이다. Constraints(제약)를 기반으로 최종 프레임에 뷰를 배치
- Adaptive Layout
2014년도에 나온 UI구성 방식 모든 디바이스의 해상도에 대응하는 하나의 UI를 개발 할 수 있도록 Size Class, Train Collection을 도입
이전까지는 아이폰, 아이패드의 스토리보드를 구분해서 개발하였지만 Universal Storyboard를 통하여 하나로 개발
Size Class를 통해 UI를 표시할 수 있는 영역의 크기를 큰 틀에서 구분하고, Train Collection을 통해 상세한 Interface를 구분하는 방식
- spring and struts
Frame-Based Layout과 Auto resizing mask를 통합하여 지칭
Auto resizing layout은 오토레이아웃에 비해 단순한 UI에서 결과를 얻기는 쉬우나 UI가 복잡해질수록 원하는 결과를 얻기 힘들어지고 소스코드와 함께 구현하여야 한다. (UI Prototyping에 좋다.)
오토레이아웃은 중간에 UI가 변경된다면 새로운 제약을 추가/수정 해야하고 그 과정에서 에러가 발생할 수 있고 기존 제약을 모두 제거하고 새로 시작하기도 효율적이지 않다.
이러면 어느정도 UI가 확장되지 않으면 Auto resizing Layout이 확장된 제약이 추가되면 자동으로 무시, 제약과 충돌하지 않음
- Auto Layout
만약 루트뷰에 뷰가 하나 더 있고 아무런 제약조건이 없다면 현재 프레임을 기반으로 자동으로 제약이 추가된다.(프로토타이핑 제약)
오른쪽 하단에는 다섯개의 팝업(캔버스 메뉴)가 존재, 제약에는 Top,Bottom, Leading, Trailing, Width, Height등 다양함.
----------- constraints
코드로 작성하는 constraints NSLayoutConstraint = 모든 제약 추가 가능, 코드가 길어짐, 디버깅 어려움
VisualFormatLanguage = 단순 표현식으로 여러개의 제약을 한번에 추가 가능, 디버깅 어려움
NSLayoutAnchor = (ios9 이후) 가독성이 높고, 적은량의 코드로 제약 추가 가능, 디버깅 쉽다
-------------- Singleton Pattern
시작과 끝 하나의 인스턴스만 공용으로 사용하도록 하는 패턴, 고정된 메모리 영역, 전역 인스턴스, 인스턴스가 절대적 하나
두번째 로딩 부터 객체 로딩시간이 줄어듬, 너무 많이 쓰면 "개방-폐쇠 원칙 위배", 멀티 쓰레드일 경우 동기화 필요
ex) 여러 사람이 하나의 프린터를 공유하여 사용, 프로그램 내부에서 하나의 큰 스케쥴링 메모리?가 있을 경우 사용
- 객체가 단 1개만 존재해야 하는 경우 사용 2. 프로그램 내부의 여러 부분에서 이 객체를 공유하면서 사용
멀티쓰레드에서 발생할 수 있는 동시성 문제도 해결해 줌