Altruistic Programmer's Blog (KR)

이타주의 프로그래머의 블로그

Base SDK와 Deployment Target의 의미

without comments

꼼꼼하게 공부하고 싶은 분은 SDK Compatibility Guide를 보시라.
(http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development)

Weak Link란?

  • 링크할 때 라이브러리에 심볼(변수, 함수, 클래스 등)이 없어도 에러가 나지 않는다.
  • 앱이 로딩될 때 심볼이 없어도 에러가 나지 않는다.
  • 그래서 런타임에 심볼이 있는지 확인하고 써야한다.

Strong Link란?

  • 링크할때나 로딩할때 심볼이 없으면 에러가 난다.

Base SDK 버전이란?

  • 내 앱이 사용할 제일 높은 SDK(혹은 OS) 버전
  • 이 버전보다 높은 버전에 새로 생긴 API는 쓸 수 없다. 

Deployment Target 버전이란?

  • 내 앱이 사용할 제일 낮은 SDK (혹은 OS) 버전
  • 이 버전보다 높은 버전의 SDK에 있는 API는 Weak Link가 된다.
  • 이 버전과 같거나 낮은 버전의 SDK에 있는 API는 Strong Link가 된다.

그래서 어떻게 쓸까?

  • 내 앱이 지원할 OS의 최저, 최고 버전을 정한다.
  • Base SDK에 최고 버전을 설정한다.
  • Deployment Target에 최저 버전을 설정한다.
  • Weak Link가 되는 심볼에 대해서는 런타임에 존재하는지 확인한 다음에 써야한다.
  • Strong Link가 되는 심볼은 컴파일 타임에 에러가 발생한다.

주의 사항

  • 베이스 클래스가 존재하지 않는 경우 자식 클래스도 존재하지 않는 것으로 간주한다.
  • 클래스 인터페이스에 정의한 델리게이트가 존재하지 않는 경우 앱 실행시에 런타임 에러가 난다.

  • 특정 OS 버전에서 발생할 수 있는 문제점을 컴파일 에러로 발생시키려면 Base SDK를 해당 OS 버전으로 낮춰서 빌드해보면 된다.

Written by muscly

April 29th, 2011 at 9:09 pm

Posted in 프로그래밍

Leave a Reply