본문 바로가기

iOS

(6)
[iOS] Dispatch Queue 개요 iOS에서 제공하는 Dispatch Queue에 대해 소개합니다. 1. Main Queue 오직 한 개만 존재 Serial한 task 처리 메인 스레드에서 동작 2. Global Queue 병행성(Concurrency)를 제공하는 Queue QoS(Quality of Service)에 따라 다양한 종류로 다뉨 작업 순서가 보장되지 않음 2.1 QoS Dispatch Queue에서 작업의 중요도를 의미한다. 우선순위가 높은 작업 처리에 더 많은 스레드를 배치한다. userInteractive UI 업데이트, 애니메이션 등 사용자 행동에 대한 즉각적인 반응을 기대하지만 꽤 큰 작업일 때 사용 userInitiated 1과 비슷하게 즉각적인 결과가 필요하지만 약간 늦을 수 있음 default 일반적인 작..
[iOS] Weak, Strong Reference 개요 저번 포스팅에서 소개한 내용처럼 iOS(Swift, Objective-C)는 ARC를 사용한다. 이 과정에서 iOS의 참조 방식은 Weak, Strong, Unowned 세 가지로 나뉜다. Strong 객체를 참조하고 Reference Count를 증가시킨다. 기존에 A 객체에서 X를 참조하고 있으면 count = 1이고, B가 X를 참조하도록 선언하면 count = 2가 된다. A와 B가 X를 참조하는 reference를 모두 nil로 만들 때 할당이 해제된다. var a1: A? = A() var a2: A? = a1 var a3: A? = a2 a1 = nil a2 = nil a3 = nil //해제 Strong을 사용할 시 유의해야되는 점은 Strong Reference Cycle이 생길 수..
[iOS] Auto Referencing Counting Auto Referencing Counting Auto Referencing Counting(이하 ARC)는 자동으로 메모리를 관리하는 메커니즘이다. 객체에 대한 참조 수를 관리하고 특정 객체의 참조 수가 0이 되었을 때 해당 객체를 메모리에서 해제한다. JVM 진영에서는 Garbage Collector(이하 GC)와 유사하지만 다른 점이 많다. ARC는 컴파일 타임에 결정되지만, GC는 런타임에 수행된다. Objective-C에서는 메모리 관리를 수동으로 수행했지만, 최근 버전에는 ARC를 지원하며, Swift는 ARC를 자동으로 지원한다. ARC가 동작하는 원리 위에서 언급한 것 처럼 Objecitve-C는 메모리 관리를 수동으로 했다. 이 때, 참조 수를 증가시키기 위해 retain, 감소시키기 위..
[Objective-C] 3. 프로토콜(Protocol) 1. 프로토콜(Protocol) 프로토콜은 선언만 되고 구현이 되지 않은 객체 지향의 흔한 개념인 인터페이스를 의미한다. 작성법은 다음과 같다. @Protocol 프로토콜명 : NSObject 메서드 정의 @end 이런 프로토콜은 다른 클래스에서 구현할 수 있다. 이 때, '프로토콜을 따른다'라고 표현한다. 2. 프로토콜(Protocol)을 따르는 클래스 Flyable.h @protocol Flyable - (void)fly; @end KingFisher.h @interace KingFisher @end KingFisher.m @implementation KingFisher - (void)fly { NSLog(@"Fly High"); } @end 3. Delegate Pattern Delegate Pat..
[Objective-C] 2. Class - Method & Property 1. 개요 클래스가 무엇인지 설명하기보다는 어떻게 작성하면 될 지를 위주로 설명합니다. 2. 기본 작성법 Objective C는 헤더 파일과 구현 파일로 나뉜다. 먼저 헤더 파일을 작성해보자. Human.h #import @interface Human: NSObject { - (void)print:(NSString *)message; + (void)printWithName:(NSString *)name message:(NSString *)message; } 먼저 헤더 파일에서는 클래스의 설계를 작성한다. 흔한 객체 지향 언어에서 class '클래스명'의 문법이 아닌 @interface '클래스명'의 문법을 가진다. 그리고, NSObject는 Objective-C의 루트 클래스로 Objective-C의 런..
[Objective-C] 1. 개요 1. 개요 과거 애플의 프로그래밍 언어로 활용되었다. 현재도 일부 기업에서 활용되는 상황이다. 최근 iOS 개발을 하게 되어 Objective C에 대해 정리하면 좋을 것 같아 앞으로 블로그에 기록해보려고 한다. 2. 특징 C의 확장 C언어에서 단순히 객체 지향 패러다임을 추가한 형태이다. 순수 C 코드를 그대로 활용할 수 있다. 이런 객체 지향 개념을 추가하기 위해 별도의 런타임이 필요하다. JVM 처럼 가상 머신을 활용하는 형식은 아니고, 단순히 라이브러리를 링크하는 것이다. 구조체 Objective C의 모든 객체는 사실 구조체로 이루어져있다. 객체의 존재하는 메서드는 해당 메서드의 구현체(함수)로의 함수 포인터를 구조체 안의 리스트 형태로 들고 있다. 따라서, 객체의 메서드를 호출하면 구조체의 리..