본문 바로가기

분류 전체보기22

[iOS] Xcode 에서 비동기 테스트 작성하기 Xcode를 이용한 Test(Unit, UI)를 구현할 때, 비동기 작업이 완료될 때까지 기다려야 하는 상황이 있습니다. 특히, 네트워크 통신이 필요한 요즘의 앱에서는 필수적이죠. 예를 들면, 서버에서 데이터를 받아오는 것을 테스트한다거나, 받아온 데이터를 가공하고 다음 동작을 테스트를 하는 케이스가 있을 것입니다. 이번 글에서는 비동기 API를 테스트하는 방법과, Property의 값 변화를 기다렸다가 처리하는 방법에 대해서 알아보려고 합니다. 비동기 API 테스트 APIProvider의 asyncTask 함수의 호출 결과를 검증하기 위한 간단한 테스트 코드입니다. 하지만, 이 테스트는 반드시 실패하게 됩니다. 왜냐하면 asyncTask 함수가 비동기 함수이기 때문에, 테스트의 마지막 줄에서 Asser.. 2019. 11. 22.
[iOS] Strong Reference Cycle - 객체 참조 이번 글에서는, 이전 글의 마지막에 언급했던 Strong Reference Cycle에 대해서 알아보려 합니다. 이전에 작성했던 ARC에 대한 글을 읽어보시면, 이해하는데 도움이 됩니다. [iOS] 메모리 관리 기법 - ARC (Automatic Reference Counting) Xcode 4와 동시에 등장한 ARC(Automatic Reference Counting) 덕분에, iOS 개발자들은 레퍼런스 카운트 관리에서 해방될 수 있었습니다. 그렇다면 ARC는 어떻게 동작하기에 개발자들의 수고를 덜어주고 있을까요?.. mildwhale.tistory.com 이전 글에서 ARC가 객체의 참조 카운트를 추적하고, 더 이상 필요하지 않을 때(카운트가 0) 객체가 메모리에서 해제된다고 했습니다. 하지만, 프로.. 2019. 11. 19.
[iOS] UIScreen으로 화면 크기(해상도) 가져오기 개발을 하다 보면, 단말의 화면 크기(해상도)가 필요할 때가 있습니다. UIViewController의 Bounds 또는 Frame 값을 가져올 수도 있지만, UINavigationBar 또는 SafeArea 때문에 화면의 크기를 제대로 가져올 수 없습니다. 그럴 때는 디스플레이(하드웨어)의 정보를 가져올 수 있는 UIScreen을 이용하면 됩니다. 예제 코드 // Swift let bounds: CGRect = UIScreen.main.bounds print(size) // Objective-C CGRect bounds = [UIScreen mainScreen].bounds; NSLog(@"%@", NSStringFromCGRect(bounds)); 2019. 11. 5.
[iOS] 메모리 관리 기법 - ARC (Automatic Reference Counting) Xcode 4와 동시에 등장한 ARC(Automatic Reference Counting) 덕분에, iOS 개발자들은 레퍼런스 카운트 관리에서 해방될 수 있었습니다. 그렇다면 ARC는 어떻게 동작하기에 개발자들의 수고를 덜어주고 있을까요? 이번 글에서는 ARC가 어떤 역할을 하며, 어떻게 동작하는지 알아보려 합니다. 이전에 작성했던 레퍼런스 카운팅과 MRR에 대한 글을 읽고 나면, 이 글을 이해하는데 도움이 됩니다. [iOS] 메모리 관리 기법 - 레퍼런스 카운팅 (Reference Counting) 'iOS와 OS X의 메모리 관리와 멀티스레딩 기법'이라는 책을 접하게 되어 내용을 정리하고자 합니다. 이번 글의 주제는 메모리 관리 기법의 기본인 '레퍼런스 카운팅'과 '메모리 누수' 입니다. 레퍼런스 카.. 2019. 11. 5.
[iOS] 메모리 관리 기법 - MRR (Manual Retain Release) Xcode 4와 동시에 등장한 ARC(Automatic Reference Counting) 덕분에, iOS 개발자들은 레퍼런스 카운트 관리에서 해방될 수 있었습니다. 그럼 ARC가 도입되기 전에는 어떤 방식으로 레퍼런스 카운트를 관리했을까요? 이번 글과 다음 글에서는 '레퍼런스 카운팅'을 활용한 메모리 관리 방법에 대해 알아보려고 합니다. 레퍼런스 카운팅에 대한 내용이 궁금하다면 이전 글을 참고해주세요. [iOS] 메모리 관리 기법 - 레퍼런스 카운팅 (Reference Counting) 'iOS와 OS X의 메모리 관리와 멀티스레딩 기법'이라는 책을 접하게 되어 내용을 정리하고자 합니다. 이번 포스팅의 주제는 메모리 관리 기법의 기본인 '레퍼런스 카운팅'과 '메모리 누수' 입니다. 레퍼런스 카운팅.. .. 2019. 10. 31.
[iOS] 메모리 관리 기법 - 레퍼런스 카운팅 (Reference Counting) 'iOS와 OS X의 메모리 관리와 멀티스레딩 기법'이라는 책을 접하게 되어 내용을 정리하고자 합니다. 이번 글의 주제는 메모리 관리 기법의 기본인 '레퍼런스 카운팅'과 '메모리 누수' 입니다. 레퍼런스 카운팅 레퍼런스 카운팅(Reference Counting)은 iOS(Mac OS)에서 사용하는 메모리 관리 방법입니다. 이 방법 객체를 참조하는 수(Reference Count)의 증가 또는 감소를 통해 메모리를 관리하게 됩니다. 객체를 생성하거나 참조 하게되면 레퍼런스 카운트는 '+1' 증가하게 되고, 해당 객체의 사용이 끝나거나 객체를 반환(release)할 경우 레퍼런스 카운트가 '-1' 감소됩니다. 최종적으로 해당 객체의 레퍼런스 카운트가 '0'이 될 경우 해당 객체는 메모리에서 소멸됩니다. 객체.. 2019. 10. 31.