2011-10-21 3 views
3

응용 프로그램을 크게 업그레이드하려고합니다. 업그레이드가 너무 중요합니다. 실제로 코드를 처음부터 시작 했으므로 새 버전에 포함 된 원본 코드베이스는 없습니다. 나는 단순히 이전 버전에서 * -Info.plist를 복사하고 번들 버전 식별자를 업데이트했다.응용 프로그램 업그레이드 문제

이전 (현재 App Store) 버전에서 업그레이드하려고하면 문제가 발생합니다. 내가 엑스 코드를 통해 장치에 응용 프로그램을 실행할 때, 나는 메시지를 제공하고있다 :

시작 오류 실행 "응용 프로그램 이름은"원격 프로그램을 실행 오류 : 프로세스에 대한 작업을 가져 오지 못했습니다 699

하는 경우 나는 출력 창에 다음과 내가 같이하고, 그것을 종료 후 응용 프로그램을 다시 실행하려고 :

2011-10-21 15:40:27.996 Application Name[713:707] Unknown class Application_Name_NewAppDelegate in Interface Builder file. 
2011-10-21 15:40:28.013 Application Name[713:707] Unknown class myTabBarController in Interface Builder file. 
2011-10-21 15:40:28.019 Application Name[713:707] Unknown class SelectViewController in Interface Builder file. 
2011-10-21 15:40:28.037 Application Name[713:707] Unknown class AddDateViewController in Interface Builder file. 
2011-10-21 15:40:28.047 Application Name[713:707] Unknown class DisplayViewController in Interface Builder file. 
2011-10-21 15:40:28.063 Application Name[713:707] Unknown class AboutViewController in Interface Builder file. 
2011-10-21 15:40:28.125 Application Name[713:707] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UICustomObject 0x16cae0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key window.' 
*** First throw call stack: 
(0x3200c8bf 0x31d7c1e5 0x3200c5f5 0x35ba1333 0x35ba0e33 0x35b7af19 0x31f6b803 0x31f6c491 0x32d384bf 0x32d39bb9 0x32c72a45 0x32afc227 0x32af6313 0x32ac4921 0x32ac43bf 0x32ac3d2d 0x3206fe13 0x31fe0553 0x31fe04f5 0x31fdf343 0x31f624dd 0x31f623a5 0x32af5457 0x32af2743 0x21b9 0x2178) 

이 클래스는 실제로 현재 버전의 일부이며, 새 버전에서 전혀 포함되지 않는 I 로 업그레이드하려고합니다. 그래서 나는 약간의 알려지지 않은 이유로 업그레이드가 실패한 것처럼 보입니다.

아무에게도이 사실을 알릴 빛이 있습니까?

+0

누구든지 아이디어가 있습니까? –

+0

이 때마다 또는 한 번만 발생합니까? 나는 또한 새로운 버전을 실행하는 데 몇 가지 문제가 있었지만 정말 희귀했다. 그리고 두 번째로 잘 작동했다. –

답변

6

이것은 NIB 캐시와 관련이 있습니다 (오류 종료 "Interface Builder file"). NIB의 이름을 바꿨을 때 코드에서 어딘가에서 문제가 해결되지 않았지만 NIB 캐시로 인해 잘못된 이름이 여전히 작동한다는 것을 알고 놀랐습니다. 직접적인 병렬은 아니지만 코드의 현재 빌드 이상으로 캐시되는 앱 데이터가 있다는 점을 보여줍니다. 오류가 발생하면 인터페이스 작성기를 참조하므로 아마도 관심있는 NIB 캐시가됩니다.

일반적으로 "클린 빌드"를 수행하면이 문제가 해결되지만 처음부터 완전히 시작한 경우 레거시 빌드 폴더 내용이 없으므로 문제가되지 않습니다. 따라서 NSCachesDirectory를 수동으로 지우고 문제가 해결되는지 확인하는 것이 하나의 가능성 일 수 있습니다. (누구든지 NIB 캐시가 NSCachesDirectory에 저장되어 있는지 확인할 수 있습니까?)

두 번째로, 실제 AppStore 업그레이드에서 전체 앱이 삭제되므로 Xcode에서 빌드하는 과정이 실제 AppStore 업그레이드를 미러링하지 못할 수도 있습니다. 사용자 데이터 디렉토리를 제외하고 모든 캐시 된 데이터를 삭제해야합니다. One answer on this question은 앱을 제작 한 다음 iTunes를 통해 설치하면 실제 업그레이드 프로세스를 더욱 자세히 반영 할 수 있다는 흥미로운 아이디어를 제시하여 Xcode에서 구축하는 것이 아니라 실제 업그레이드에 문제가 있는지 여부를 알려줍니다. 검토 할 가치가 있습니다. 모든 보고서는 업데이트시 NIB 캐시가 삭제된다는 것입니다.

+0

덕분에 도움 던컨. 오늘 밤에 너의 제안을 살펴볼 것이다. –

0

XCode 4를 사용한다고 가정하면 Project Navigator에서 프로젝트를 선택한 다음 대상을 선택하십시오. 빌드 단계를 선택하고 다음을 확인하십시오.

모든 닙은 '번들 리소스 복사'아래에 나열됩니다.

'.m'파일은 모두 '컴파일 소스'에 나열됩니다.

(당신이 엑스 코드 3을 사용하는 경우, 당신은 아래의 프로젝트 네비게이터 자체에서 이러한 찾을 수 있습니다 '목표.')

은 때로는 펜촉 파일이 어떤 이상한 이유로 빌드 단계에 배치되지 않습니다.

문제가 해결되지 않으면 Interface Builder에서 문제가있는 각 펜촉에 대해 파일 소유자를 클릭하고 ID 관리자를 선택한 다음 클래스가 해당 펜촉으로 설정되어 있는지 확인하십시오.

+0

프로젝트에 nib 파일이 없다. , 그 이유는 내가 그들에게 참조를 얻는 것이 이상하다고 생각하는 이유입니다. –

+0

이전 프로젝트를 완전히 제거 했습니까? 사용자/라이브러리/개발자/Xcode/DerivedData 및 스냅 샷에서도 제거되었는지 확인하십시오. 또한 로컬 프로젝트에 새로운 프로젝트 폴더가 있는지 확인하십시오. 로컬 파일 저장소와 같은 오래된 파일이있을 수 있습니다. –

+0

완전히 새로운 프로젝트이며 이전 버전과 동일한 번들 ID를 사용합니다. –

관련 문제