2015-02-03 7 views
2

몇 가지 iOS 앱간에 공유 할 작은 개인 프레임 워크를 작성했습니다.작업 공간이있는 Xcode 6의 개인용 Objective-C 프레임 워크를 Xcode 6에 포함하는 방법

  1. 풀 SimpleApp 소스 제어에서 : 여기

    내가 구상 작업 흐름입니다.
  2. 소스 제어에서 BobFramework를 당깁니다.
  3. 아무 래도 Xcode를 사용하여 SimpleApp에 BobFramework를 포함시킵니다.
  4. 프로젝트를 빌드하십시오.
  5. 완료!

문제점은 "Xcode를 사용하여 임베드"단계를 수행하는 방법입니다.

이 작업을 수행하는 방법에 대한 단계별 지침을 찾을 수 없습니다. Apple's docs은 오래된 거짓말입니다.

내가 발견 한 모든 스택 오버플로 질문은 독자가 전체 절차를 알고 있다고 가정하고 암묵적인 단계를 채우기에 충분한 상황 별 단서를 수집 할 수 없습니다. 사실, 나는 많은 질문들이 애플의 현대 출판 절차가 없으므로 많은 사람들이 묵시적이거나 추측 한 단계에 따라 있다는 사실에서 비롯된 것이라고 말할 수있다.

가장 직접적이고 간단하며 완전하고 최신 인 set of steps은 주로 Swift에 적용됩니다. 스위프트의 절차는 합리적입니다. 사용하고 싶습니다만 Objective-C를 사용하고 있습니다.

나는 프로 시저를 추측하고있는 것을 기반으로 여러 실험을 시도했지만 올바른 절차가 될 수있는 가능성이 너무 많아서 내 특정 문제 중 하나를 게시하는 것이이 올바른 접근 방법이라고 생각하지 않습니다. 시각. 결국, 내 문제를 일으키는 모든 일이 잘못 될 수 있습니다.

+0

작업 영역에서 두 번째 프로젝트 파일을 사용하지 않는 이유는 무엇입니까? –

+0

@IanMacDonald 단계별 방법은 무엇입니까? 나는 대답의 일부를 암시하는 수십개의 한 줄 발언을 읽었다. 지금까지 나는 아무 것도 발견하지 못했기 때문에이 질문을 통해 완전한 답을 문서화하고 싶습니다. – Jeff

+0

1 단계 : Finder를 BobFramework 프로젝트가있는 폴더로 엽니 다. 2 단계 : SimpleApp 프로젝트가 포함 된 작업 영역에서 Xcode를 엽니 다. 3 단계 : BobFramework 프로젝트를 Xcode의 Project Navigator로 드래그하여 SimpleApp와 동일한 작업 공간에 연결하십시오. –

답변

1

이 사실을 이해하는 데 다소 시간이 걸렸지 만 그랬습니다. 나는 더 많은 스크린 샷을 가지고 elaborate answer on my blog을 올렸다.

스택 오버플로에 대한 답변을 압축합니다. 예제 레시피로 설명하겠습니다.

시작 지점 : Pen1라는 이름의 프로젝트와

  • 작업 공간의 이름 SandBox2.
  • BobLib은 자체 프로젝트의 프레임 워크 이름입니다.
    • 파일 | 새로운 | 프로젝트, iOS | 프레임 워크 & 라이브러리 | 코코아 터치 프레임 워크.
    • 내 특정 상황을 시뮬레이션하는 별도의 프로젝트입니다. 기회가 생기면 프레임 워크가 이미 작업 영역의 일부로 시작되어 있어야합니다.
    • 헤더 파일 Newhart.h에는 doThatThing 메서드 선언이 포함되어 있습니다.

목표 : Pen1의의 ViewController는 뉴 하트 클래스의 인스턴스 doThatThing 호출합니다.

단계 : BobLib.h

  • 에서

    1. 가져 오기 Newhart.h는 공공로 Newhart.h을 지정.
      1. Project Navigator에서 Newhart.h를 선택합니다.
      2. 유틸리티 영역 | 파일 관리자 | 대상 회원은 "Project"를 "Public"으로 변경합니다.
    2. 시뮬레이터와 장치 모두에 대해 BobLib을 빌드하십시오.
    3. Control 키를 누른 채 BobLib.framework를 클릭하고 Finder에서 표시를 선택하십시오.
    4. Xcode에서 Sandbox2를 엽니 다.
    5. BobLib.framework을 Finder 창에서 Pen1으로 드래그하십시오.
    6. 프로젝트 | 대상 | 일반 | Embedded Binaries는 BobLib.framework를 추가합니다.
    7. BobLib.framework가 이미 Project | 대상 | 일반 | 링크 된 프레임 워크 및 라이브러리.
    8. 실행 및 테스트 앱. Newhart 인스턴스에서 doThatThing으로 전화 할 수 있어야합니다.
    9. 이것은 iOS 8 이상에서만 작동합니다.
  • +0

    블로그에서 앱 프로젝트로 프레임 워크를 드래그 할 때 장치 제품이 아닌 시뮬레이터 제품에서 드래그한다고 말했습니다. 왜? 어딘가에 관한 문서를 찾았습니까? 어떤 경우에는 시뮬레이터 나 장치 프레임 워크를 끌 었는지에 따라 다른 동작에 문제가 있기 때문에 질문합니다. 내가 장치에서 시뮬레이터로 바꿀 때 이것을 다시해야한다는 것이 이상하거나 버그가있는 것처럼 보입니다. –

    +0

    @RobN 쓸데없는 대답을하고 싶지는 않지만 너를 무시하고 싶지는 않습니다. 답변 : 정확하게 기억하지 못했지만 다른 솔루션으로 옮겼습니다. 내 기억에 따르면 동적 lib 바이너리는 플랫폼 : 시뮬레이터 또는 장치와 일치해야합니다. 어쩌면 새로운 Xcode 6.2가 이러한 불편 함을 수정했을 것입니다. 두 가지를 모두 추가 할 수 있습니까? – Jeff