캐시는 컴퓨터의 성능을 향상시키기 위해 사용되는 메모리를 말합니다.
주기억장치와 CPU사이에 위치하고, 자주 사용하는 데이터들을 기억합니다.
캐싱은 이 캐시 영역으로 데이터를 가져와서 접근하는 방식을 말합니다.
예를 들면 속도가 느린 디스크의 데이터를 속도가 빠른 메모리로 가져와서 메모리상에서 읽고 쓰는 작업을 수행합니다.
이것이 캐싱입니다.
다른 의미로는 메모리 상에 있는 데이터를 연산하는데, 이 연산을 더 빠른 CPU 메모리 영역으로 가져와서 처리를 수행하는 것도 캐싱한다고 표현합니다.
캐슁이란 저장한다는 뜻이다. 컴퓨팅에서 캐슁이란 오랜시간이 걸리는 작업의 결과를 저장해서 시간과 비용의 필요를 회피하는 기법을 의미한다. 캐슁은 고성능 에플리케이션을 만드는데 가장 중요한 요소 중의 하나다.
캐시는 지역성이라는 특성을 이용하여 성능 개선을 합니다.
지역성은 시간, 공간, 순차적 지역성으로 나눌수 있습니다.
다음은 캐슁의 대표적인 사례다.
링크 공유해준 Thanks to Alan 👏
A mutable collection you use to temporarily store transient key-value pairs that are subject to eviction when resources are low.
class NSCache<KeyType, ObjectType> : NSObject where KeyType : AnyObject, ObjectType : AnyObject
You typically use NSCache objects to temporarily store objects with transient data that are expensive to create. Reusing these objects can provide performance benefits, because their values do not have to be recalculated. However, the objects are not critical to the application and can be discarded if memory is tight. If discarded, their values will have to be recomputed again when needed.
Caching in Swift | Swift by Sundell
A segmented control is a linear set of two or more segments, each of which functions as a mutually exclusive button. Within the control, all segments are equal in width. Like buttons, segments can contain text or images. Segmented controls are often used to display different views. In Maps, for example, a segmented control lets you switch between Map, Transit, and Satellite views.
Segmented Controls - Controls - iOS - Human Interface Guidelines - Apple Developer
Create a composite interface by combining content from one or more view controllers with other custom views.
Container view controllers promote better encapsulation by separating out your content from how you display that content onscreen. Unlike a content view controller that displays your app’s data, a container view controller displays other view controllers, arranging them onscreen and handling navigation between them.
A container view controller is still a view controller, so you display it in a window or present it like any other view controller. A container view controller also manages a composite interface, incorporating the views from one or more child view controllers into its own view hierarchy. Each child continues to manage its own view hierarchy, but the container manages the position and size of that child’s root view.
Many container view controllers facilitate navigation between different parts of your app’s content. Examples include UINavigationController, UITabBarController, and UIPageViewController, which help users navigate between different view controllers. You can also use container view controllers to organize the content you have more efficiently. For example, UISplitViewController displays two view controllers side-by-side on iPad. The only difference between navigation and organization is that navigation requires custom API to change the child view controllers; otherwise, the implementations are identical.
Implementing a Container View Controller
Managing View Controllers With Container View Controllers
세그먼트 콘트롤을 그냥 (테이블뷰 커스텀) 셀 위에다 올려버렸더니 저렇게 셀이랑 겹쳐서 나옴
해결 방법: 네비게이션 위에다가 세그멘티드 올림
Thanks to 제임스 👍
원래의 미션은
왼쪽 세그먼트를 클릭했을 때는 미완성 테이블뷰를 보여주고
오른쪽 세그먼트를 클릭했을 때는 빨간색 뷰컨을 보여주고 싶었으나
지금 사태는 뭘 누르든 빨간 뷰컨이 보임...ㅎ
이슈 원인: 뷰 컨을 총 3개를 만들어줘야 하는건데
그냥 오픈마켓 테이블뷰 컨트롤러 위에다가 Segmented Control을 얹었따ㅎ
해결 방법: 뷰 컨을 3개로 나눠줌.
근데 이제는 아예 실행이 안됨 ^.ㅠ
에러 메시지: 2021-05-26 19:54:30.966174+0900 OpenMarket[45545:1354290][WindowScene] Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?
똘똘한 제임스한테 물어봤더니 바로 해결됨 ^.^ 👍
이슈 원인: 디폴트 뷰컨트롤러가 설정이 안돼 있었음
메인 스토리보드 → Navigation Controller 선택 → (5번째) Simulated Metrics 선택 → View Controller → Is Initial View Controller가 마킹 돼있어야 함!!!
마킹하고 실행해보니 실행 잘됨 !!