2010-03-25 3 views
1

미리 정의 된보기 컨트롤러가 포함 된 클라이언트 용 SDK를 만들고 있습니다. 쉽게 사용할 수 있도록 모든 항목 (정적 lib, .xib 및 .png (s))을 패키지하는 권장 방법은 무엇입니까?iPhone 용 SDK (정적 lib + xibs)를 어떻게 패키지합니까?

Pinch Media와 같이 사용했던 SDK는 .h 및 .a 파일을 제공하기 만하면 사용자가 액세스 할 수있는 기능 만 표시하고 다른 모든 것을 숨길 수 있습니다. Apple의 설명서를 읽으면서 프레임 워크가 이상적이지만 iPhoneOS에서는 허용되지 않습니다.

몇 가지 주요 요구 사항 : 소스를 노출하거나 내부를 반대하지 마십시오

  1. .
  2. 간편한 사용법 & 설치.
  3. 장치와 시뮬레이터 모두에서 작업하십시오.

고마워요!

답변

3

프레임 워크가 이상적이지만, 말했듯이 iPhone에서는 허용되지 않습니다. 필자는 결국 헤더 파일, 정적 라이브러리 및 리소스 번들 등 적어도 3 개의 파일을 제공해야한다고 생각합니다.

헤더 파일에는 공개하려는 모든 API가있을뿐입니다. 여러 클래스가있는 경우 여러 헤더를 제공 할 수 있습니다. 나는 각 아키텍처 (장치 및 시뮬레이터) 정상처럼 컴파일하는 것이 좋습니다 정적 라이브러리의

다음 (필요에 따라 경로 교체)과 같이 그들을 결합하는 사러를 사용 번들로

lipo -create -output output/file/path device/file/path simulator/file/path 

당신 번들을 만들기 위해 Xcode에서 새로운 타겟을 만들 수 있지만 실제로는 폴더 일뿐입니다. 번들을로드하고 리소스를 얻는 방법을 SDK에서 알 수 있어야합니다. 그러나 번들에서 실행 가능 코드를로드 할 수는 없습니다. 그것이 프레임 워크가 iPhone에서 작동하지 않는 이유입니다.

+0

이것은 내가 의심하는 것입니다. 그렇다면 어떻게하면 리소스 번들에서 펜촉을로드 할 수 있습니까? 확실한 방법 (UIViewController의 initWithNibName : bundle :)이 작동하지 않는 것 같습니다. – tomwhipple

+0

위의 주석에서 내 자신의 질문에 대답하기 위해, 열쇠는 경로 (식별자가 아님)를 사용하여 NSBundle 객체를 생성하고 initWithNibName : Bundle :에 전달하는 것으로 보인다. – tomwhipple

+0

이 작업을 수행하는 방법에 대한 자습서가 있습니까? 여전히 의미가 없습니다. 나는 이것에 관해 nOOb다고 생각한다. – chrish