iOS 4.0 이후의 Delegate Messaging

 

 

 

 

코코아 프로그래밍에서 Message Deletate를 이해하는 것은 매우 중요한
이슈 중에 하나일 겁니다.

백단에서 메세지를 받으면 자동으로 실행이 되고 호출이 되는 형태를
취하고 있기 때문에, 어플리케이션을 구동시키는 로직을 이해하기 위해서는
필수라고 볼 수 있죠.

Background 실행이 되지 않던 iOS 3.x 버젼들과
Background 실행이 되는 iOS 4.0 이후에서 차이가 있는데요,
해외 블로거 한분이 잘 정리해 주셨습니다.
원문 링크 : http://www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/

 

 

간단히 말씀드리면 아래 두개의 이미지로 표현 됩니다.

 

 

백그라운드 실행이 되지 않던 시절의 흐름도는 매우 간단합니다.
application:didFinishLaunchingWithOptions: 메쏘드의 호출로 시작하여 applicationWillTerminate로 끝이 나는
비교적 간단한 호출 단계를 거칩니다.

그런데 백그라운드 실행이 가능해지면서 상당히 복잡한 구조로 갑니다.
아래를 보시죠.

 

applicationWillEnterForeground:, applicationDidEnterBackground: 등의 추가적인 메쏘드 호출 상황이
메세지와 상황에 따라 발생하게 되는 것을 볼 수 있습니다.

크게 변한 건 별로 없지만 전반적인 어플리케이션의 코드 구성을 그림으로 그려보실 때
한번은 봐둘만한 그래프가 아닌가 합니다.