2010-05-21 4 views
0

iPhone/iPad 용 Universal binary로 프로젝트를 진행하고있었습니다. 나는 iPhone app side 을 만들었고 나는 iPad도 완성하려고했다. 내가 UIPopoverController 클래스를 사용하는 iPad 클래스에서, 시뮬레이터에서 3.2를 빌드 할 때 te iPad 하나를 실행하고 잘 작동하지만 iPhone 버전 앱을보고 싶다면 3.1을 의미한다는 것을 알았습니다. 3, 그것은 나에게 아이 패드 수업에서 누락 된 틀의 오류를 준다.펌웨어 버전이 iPhone/iPad universal 빌드 문제

더 이상 iPhone 버전의 앱을보고 변경할 수 없기 때문에이 문제를 해결하는 방법을 모릅니다. iPad 클래스를 모두 제거한 다음 다시 가져 오기를 수행 할 수 있습니다.

감사합니다.

답변

2

3.2 SDK를 사용하면 Simulator는 iPad로만 실행됩니다.

iPhone 측을 테스트하려면 전 처리기 조건에서 3.2 특정 코드를 래핑하여 3.1.3으로 컴파일해야합니다.

장치가있는 경우 대상의 빌드 설정에서 "배포 대상"설정을 설정하여 3.2 SDK를 사용하여 iPad와 iPhone 버전을 모두 컴파일 할 수 있어야합니다. 지원할 iPhone OS의 가장 낮은 버전 (예 : 3.1.3)으로 설정하고 3.2를 사용하여 컴파일하십시오. 핵심 텍스트 (Core Text)와 같은 새로운 3.2 프레임 워크와의 "약한 링크"도 필요합니다.

마지막으로, 아직 실행하지 않았다면 iPhone 버전이 popovers와 같은 3.2 기능을 사용하려고 시도하지 않도록 런타임 검사를 사용해야합니다.

이렇게하면 팝 오버 참조를 제거 할 필요가 없으므로 컴파일 할 수 있습니다. 그러나, 내가 말했듯이, 이것은 테스트 할 물리적 장치가있는 경우에만 유용합니다.

시뮬레이터를 사용하려면 전 처리기 조건 방법을 따라야합니다.

+0

녀석, 답을 알려주세요. hting은 내가 Target Dep를 3.1.3으로 alredy했고, 3.2 for iPhone이 PopOver 클래스를로드하지 못하도록 컴파일하고있다. 내가 appdelegate의 인터페이스 .h에 popover의 나의 인스턴스를 가지고 있기 때문에 나는 "클래스 검사"를 사용할 수 없다. 나는 장치를 컴파일하고 무슨 일이 일어나는지 보려고 노력할 것이다. – DigitalVanilla

+0

Okkei, 기본적으로 .h 파일에 새로운 UIKit을 설치하는 경우 을 실행하기 때문에 "id"캐스트를 사용해야합니다. 매우 일반적인. 그런 다음 .m의 모든 호출에서 Class를 확인해야합니다. Class는 엉망입니다. 범용 앱을 빌드하는 데 3 번 더 걸립니다. 하지만 지금은 작동합니다 :) – DigitalVanilla

0

3.2 Base SDK 및 iPhone OS Deployment Target 3.1.3 (또는 그 이전 버전)으로 만 빌드 할 수 있습니다. 이렇게하면 시뮬레이터는 3.2/iPad로만 실행됩니다. 그것이 바로 그 방법입니다.

따라서 iPhone 테스트를 위해 실제 장치에서 디버깅해야합니다.