일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- @ObservedObject
- @main
- combine
- architecture
- ScrollViewProxy
- The Composable Architecture
- @StateObject
- Combine vs Async/Await
- await
- 이것이나의다정입니다
- App Thinning
- Static Dispatch
- async/await
- SwiftData
- wwdc23
- AnyCancellable
- SwiftUI
- async
- ios
- Dynamic Dispatch
- ScrollViewReader
- swift
- Universal Link
- @NameSpace
- Custom URL Scheme
- MVVM
- fileprivate
- SFSafariView
- matchedGeometryEffect
- Concurrency Programming
- Today
- Total
목록iOS (26)
홍로그
UIWebView 현재는 Deprecated 된 상태 UIKit 프레임워크의 일부 페이지 크기 조절 가능 약 3500개의 개체를 렌더링 90% CPU를 사용하여 렌더링 데이터가 쿠키에 저장되므로 다음 로딩 시간은 이전에 비해 적음 프로세스 내에서 실행. 웹에서 사용하는 메모리가 앱 사용 공간의 일부로 간주 iOS에서 할당하려는 값을 초과하면 앱 자체가 운영체제에 의해 손상됨 WKWebView WebKit 프레임워크 약 8500개의 개체를 렌더링함으로써 UIWebView보다 두배이상의 성능 25% CPU를 사용하여 렌더링 데이터가 쿠키에 저장되지 않아 항상 로딩시간이 동일함 프로레스를 벗어나 별도의 스레드에서 실행하기 때문에 할당량을 초과해도 앱이 죽지 않음. (앱이 알림을 받고 페이지를 다시 로드하려고 ..
ARC가 메모리를 참조하는 방법 Strong reference strong은 어떠한 설정도 없을 때의 디폴트 값이다. 해당 인스턴스의 소유권을 가진다. reference count를 증가시킨다. 클로저 캡처링 이나 객체 간 서로 참조 등의 경우 reference count가 0이 되지 않는 상황이 있을 수 있고, 이럴 때 메모리 누수 (Memory Leak)가 발생할 수 있다. Weak reference weak은 해당 인스턴스의 소유권을 가지지 않는다. reference count를 증가시키지 않는다. weak은 객체가 Optional이라 해당 객체가 해제되어 버린 상태에서 참조하게 되면 Application이 강제 종료 되는 상황이 생긴다. 대신 언래핑 하는 과정을 통해 안전하게 사용할 수 있다. 객..
ARC란 메모리 관리를 위해서는 Heap 영역에 참조형 자료들이 얼마나 참조되고 있는지 카운팅 하고 이에 따라 메모리를 할당 및 제거해야 한다. ARC는 이것을 자동으로 해준다. ARC는 Automatic Reference Counting으로 Compile Time에 동작하며 클래스의 새로운 인스턴스를 만들 때 ARC는 인스턴스의 정보를 저장하기 위해 메모리를 할당하고 코드를 분석해서 자동으로 적절한 위치에 retain, release 코드를 생성해 준다. 또한 reference count를 추적해 0이 되면, 즉, 인스턴스가 더 이상 사용되지 않는다고 판단하면 메모리를 해제한다. GC란 GC는 (Garbage Colletion)으로 프로그램 실행 중 (Run time)에 동적으로 감시하고 있다가 더 이..
뷰가 화면에 보이는 상태의 변화나 뷰의 레이아웃에 변화가 생기면 뷰 컨트롤러는 여러 가지 메서드를 호출해 서브 클래스가 적절한 대응을 할 수 있게 한다. 또 뷰 컨트롤러는 각각의 생명주기를 가지고 있어 상황에 따라 원하는 로직을 수행하도록 만들 수 있다. viewDidLoad() 뷰 계층이 메모리에 로드된 직후 호출되는 메서드로 메모리에 처음 로딩 될 때 1회 호출되는 메서드다. 메모리 경고로 뷰가 사라지지 않는 이상 다시 호출되지 않는다. 뷰의 추가적인 초기화 작업을 하기 좋은 시점이다. viewWillAppear(_ animated: Bool) 뷰가 뷰 계층에 추가되고 화면이 표시되기 직전에 호출되는 메서드로 다른 뷰로 이동했다가 되돌아오면 다시 호출되는 메서드다. 화면이 나타날 때마다 수행해야 하는..
구조체와 클래스는 데이터를 용도에 맞게 묶어서 표현할 때 사용한다. 구조체와 클래스는 데이터를 가질 수 있도록 프로퍼티를 사용하고, 기능을 실행하기 위해 메서드를 사용한다. 또 프로퍼티에 접근할 수 있도록 서브 스크립트를 정의한다. 그리고 새로운 기능을 위해 익스텐션 기능을 적용할 수 있다. 구조체(Structure) 구조체는 struct 키워드로 정의한다. 구조체는 상속할 수 없다. 구조체는 값 타입 (Value type)이다. Stack 메모리에 할당. 두 object를 "같다, 다르다"로 비교해야하는 경우 사용. copy된 객체들이 독립적인 상태를 가져야 하는 경우 사용. 코드에서 object의 데이터를 여러 스레드를 걸쳐 사용할 경우 사용. 값 타입 (Value type) 값 타입은 데이터를 전달..
프로세스 프로세스는 실행 중인 프로그램을 의미한다. 각 프로세스는 별도의 공간에서 실행되며 다른 프로세스의 자료구조에 접근할 수 없다. 멀티 프로세스 멀티 프로세스는 한 가지 작업을 여러 프로세스로 진행하는 것을 의미한다. 각 프로세스는 독립된 구조라 안정성이 높다는 장점이 있다. 하지만 각 프로세스마다 메모리가 할당되어 작업량이 많아 오버헤드가 발생하는 단점이 있다. 스레드 스레드는 한 프로세스 내에서 동작되는 여러 실행 흐름을 의미한다. 한 프로세스 내의 스레드들은 주소 공간이나 자원들을 공유하면서 실행한다. 멀티 스레드 멀티 스레드는 한 가지 작업을 여러 스레드로 진행하는 것을 의미한다. 각 스레드는 메모리를 공유해 자원을 아낄 수 있고 통신이 빠르다는 장점이 있다. 하지만 자원을 공유함으로 인해 ..