반응형

iOS/강의, 고찰 6

[Objective-C, iOS] Objective-C 헤더와 m 파일에 대한 이해

Objective-C는 C 언어를 기반으로 하는 객체 지향 프로그래밍 언어입니다. Objective-C는 C 언어와 마찬가지로 헤더 파일과 구현 파일로 이루어져 있습니다. 이들 파일은 Objective-C에서 클래스 및 인터페이스를 선언하고 구현하는 데 사용됩니다. 헤더 파일(.h) Objective-C에서 헤더 파일은 클래스와 인터페이스의 선언을 포함합니다. 헤더 파일은 다른 클래스나 소스 파일에서 해당 클래스 또는 인터페이스를 import할 수 있도록 합니다. 헤더 파일의 일반적인 구조는 다음과 같습니다. // MyClass.h #import @interface MyClass : NSObject // Properties @property (nonatomic, strong) NSString *name;..

iOS/강의, 고찰 2023.03.20

[번역] 미디어 데이터 비동기 호출

이 글은 AVFoundation Document에 있는 글을 번역 및 제 생각을 추가하여 작성한 글입니다. https://developer.apple.com/documentation/avfoundation/media_assets/loading_media_data_asynchronously Loading media data asynchronously ❊ 중요 iOS 16, tvOS 16, MacCatalyst 16, macOS 13 이후부터는 AVFoundation에서 제공하는 AVAsset, AVAssetTrack, AVMetadataItem 의 동기적 속성들은 폐기(deprecate)됩니다. AVFoundation은 미디어 자료를 모델링하기 위해 AVAsset 클래스를 사용합니다. Asset을 생성하는..

iOS/강의, 고찰 2022.12.06

[iOS, Swift] 메인 쓰레드 글로벌 쓰레드 생각

최근 프로젝트를 진행하며, 어렵게 느껴진 부분이 있다 쓰레드를 다루고 비동기처리를 순서대로 정렬하고 Thread-safe 하게끔 코드가 동작하게 하는 것이다. Swift에서는 UI 화면을 업데이트를 하려면 메인 쓰레드에서만 가능하다. 그런데 메인 쓰레드에서 UI업데이트도 하고, 영상 추출 및 병합도 또한 진행하려고 하니 진행도를 표시하는 UI가 변하지 않는 부분에서 애를 먹었다. 애플에서는 AVFoundation에서 영상을 다루는 데, 영상을 추출하는 부분은 비동기 함수로 제공한다. 그동안 동기적, 순서대로 작동하게끔 코드를 구성하는 게 익숙해진 나에게 비동기적으로 로직이 작동하는 부분에서 굉장히 헷갈렸다. 지금도 또한 코드가 비동기적으로 진행할 때에 어떻게하면 Thread-safe하게 구성하게 할 지가..

iOS/강의, 고찰 2022.11.16

[iOS, Swift] 동시성 프로그래밍 작성 시 생길 수 있는 문제

동시성 프로그래밍을 작성할 때에 3가지 문제가 생길 수 있다. 먼저 경쟁 상황으로 2개 이상의 쓰레드를 사용하여 동일한 메모리에 접근할 때, 동시에 같은 메모리에 접근하다보니 값을 변경하게 되면 여러 쓰레드에서 경쟁하여 원하지 않는 값이 나올 수 있다. 해결방법으로는 Thread-Safe한 코드를 만들어 해결할 수 있다. 두번째로는 교착상황으로 한정된 자원을 여러 쓰레드에서 사용하려할 때, 자원을 얻지 못해 다음 처리를 못하는 상태를 교착상황이라 한다. 이 때 시리얼 큐를 만들거나 설계를 변경하여 수정할 수 있다. 세번째로는 우선순위 뒤바뀜 현상이다. 작업의 서비스 품질(QoS)가 다른 상태에서 높은 서비스 품질을 가지고 있는 쓰레드가 낮은 서비스 품질의 쓰레드의 진행이 끝나고 완료되려할 때에 우선순위 ..

iOS/강의, 고찰 2022.11.01

[iOS, Swift] GCD 사용 시 주의점

GCD를 사용하면서 오류나 쓰레드가 잘 안 되는 현상이 많았는데, 이번에 들은 강의에서 그런 점들을 분류하여 알려주었다. 그 중 한가지 공감이 되는 것만 작성을 하려고한다. 나머지는 강의를 통해서 알아보자 https://www.inflearn.com/course/iOS-Concurrency-GCD-Operation/dashboard iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션 동시성(Concurrency)프로그래밍 - iOS프로그래밍에서 필요한 동기, 비동기의 개념 및 그를 확장한 GCD 및 Operation에 관한 모든 내용을 다룹니다., - 강의 소개 | 인프런... www.inflearn.com 디스패치큐를 쓸 때에 ..

iOS/강의, 고찰 2022.11.01

[iOS, Swift] DispatchQueue 서비스품질 (QoS)

DispatchQueue 객체를 만들 때에나 Async 함수를 실행시킬 때 서비스 품질을 설정할 수 있다. 서비스 품질(QoS)는 비동기함수 처리가 되면서 비동기 함수의 우선순위를 어떤 것을 먼저할지에 대한 속성이다. userInteractive 속성은 거의 즉시 일어나는 함수에 대해 설정하는 값이고, 유저와 직접적인 인터렉티브(UI 업데이트, 애니메이션, UI반응 관련)에 관련한 함수를 처리할 때에 주로 쓰인다. userinitiated 속성은 몇 초내에 처리되야할 함수에 대한 설정값이다. 유저가 즉시 필요하긴 하지만, 비동기적으로 처리해야하는 작업 (ex. 앱 내에서 pdf 파일을 여는 것과 같은)을 처리할 때에 쓰인다. default 속성은 일반적인 작업을 처리할 때 쓰이는 속성이다. utility..

iOS/강의, 고찰 2022.11.01
반응형