Iphone 应用程序在模拟器和测试设备上工作,但从应用程序商店下载后崩溃

Iphone 应用程序在模拟器和测试设备上工作,但从应用程序商店下载后崩溃,iphone,objective-c,xcode4,crash,app-store,Iphone,Objective C,Xcode4,Crash,App Store,我有一个应用程序,我只是做了一个更新和上传,一切都很好地工作在模拟器上,并在设备上测试。但是,从appstor下载时,它会在特定情况下崩溃 我开始在这里寻找问题:现在我需要解决这个问题 问题似乎如下: 10 CoreFoundation 0x3614f4c4 +[NSException raise:format:] + 28 11 Foundation 0x34514e28 -[NSURL(NSURL) initFileURLWithPath:isDirectory:] + 68

我有一个应用程序,我只是做了一个更新和上传,一切都很好地工作在模拟器上,并在设备上测试。但是,从appstor下载时,它会在特定情况下崩溃

我开始在这里寻找问题:现在我需要解决这个问题

问题似乎如下:

10  CoreFoundation  0x3614f4c4 +[NSException raise:format:] + 28
11  Foundation      0x34514e28 -[NSURL(NSURL) initFileURLWithPath:isDirectory:] + 68
然而,挑战在于我的程序中没有使用“initFileURLWithPath”,因此我不知道要查找什么。我正在查看所有的初始化等,但没有发现任何问题

与上一版本相比,我更改了以下内容:

  • 通过xcode添加的新背景图形
  • 一个新的快速游戏功能,其中包括一个新的按钮和一些新的功能。我都检查过了
这里真正的问题是如何找到它,因为只有从appstore下载时它才是一个问题。顺便说一句,我知道当我按下quizapp中的“错误”按钮时,它会崩溃。这很好,但我仍然无法找出问题所在

有谁能给我一些提示,告诉我如何处理这个奇怪的问题,并解释为什么有些东西在测试设备上可以完美工作,而不是从appstore?顺便说一句,我应该如何测试这个

提前感谢:-)

====================================================================

我想我已经发现了问题所在。当崩溃发生时,我检查了那个模块,发现了一些有趣的东西。然后我在一台现场设备上测试了声音的转换,问题就解决了。打开声音导致了碰撞

代码是:

if (sound == YES) {
    //==== PLAY THE LOOSING SOUND ====//
    // Form a URL to the sound file, which in init using the Path
    NSBundle *mainBundle = [NSBundle mainBundle];
    NSString *filePath = [mainBundle pathForResource:@"wrong2" ofType:@"wav"];
    NSURL *aFileURL = [NSURL fileURLWithPath:filePath isDirectory:NO];

    // Create a sound ID, 
    SystemSoundID myID;
    // Register the sound
    AudioServicesCreateSystemSoundID((CFURLRef)aFileURL, &myID) ;
    // Play the sound!
    AudioServicesPlaySystemSound(myID);
}
代码行是:

NSString *filePath = [mainBundle pathForResource:@"wrong2" ofType:@"wav"];
我不明白的是,“错误的2.wav”存在于资源文件夹中,但仍然是一个问题

====================================================

我刚刚发现“errow2.wav”文件不在正确的目录中,但在xcode4中看起来仍然是正确的。我已将该文件的新版本复制到正确的目录,在xcode中删除了该文件,并再次将其复制到xcode中

只是不知道如何测试

====问题已解决=======
问题是我从另一个目录导入了wav文件,而不是应用程序所在的目录

我可以告诉你,我在图形和未初始化值方面也有类似的经验。最后,我发现在发布模式下编译,但使用我的开发证书允许我在设备上重现问题,并让我调试它。我很快就发现了错误。发布模式编译使用了看似不同的库或优化。我知道,在提交到appstore之前,我习惯于只在发布模式下编译时进行测试


但是,我不知道对您的具体错误有什么建议。

我可以告诉您,我对图形和未初始化的值有类似的经验。最后,我发现在发布模式下编译,但使用我的开发证书允许我在设备上重现问题,并让我调试它。我很快就发现了错误。发布模式编译使用了看似不同的库或优化。我知道,在提交到appstore之前,我习惯于只在发布模式下编译时进行测试


但是,我不知道对您的特定错误有何建议。

您可能没有直接调用[initFileURLWithPath:],但是您是否正在使用其他方法调用加载应用程序中的任何位置的文件([UIImage ImageName:]例如)?如果是这种情况,请浏览已编译的IPA发行版(右键单击,浏览包),并验证您认为应该存在的所有文件是否确实存在

如果您正在将文件下载到要打开的设备上,请验证这些文件是否确实是从服务器下载的(可能sim卡和您的设备正在缓存某些内容)


需要记住的一点是,Xcode中的文件夹/组不一定反映硬盘上项目的文件夹结构。将项目复制到Xcode中的组不会将其复制到该文件夹

此外,在编译过程中,整个文件夹层次结构都会变平,因此在MainBundle中,所有内容都在根目录中(没有文件夹),因此在开发时请记住这一点


至于测试,您是否尝试过从设备中完全删除应用程序(并重置模拟器),然后重新添加?在部署时,Xcode喜欢使用快捷方式并缓存很多东西,因此时不时地清除它是一件好事。

您可能没有直接调用[initFileURLWithPath:],但您是否使用其他方法调用在应用程序中的任何位置加载文件可能会调用该方法([UIImage imageNamed:])?如果是这种情况,请浏览已编译的IPA发行版(右键单击,浏览包),并验证您认为应该存在的所有文件是否确实存在

如果您正在将文件下载到要打开的设备上,请验证这些文件是否确实是从服务器下载的(可能sim卡和您的设备正在缓存某些内容)


需要记住的一点是,Xcode中的文件夹/组不一定反映硬盘上项目的文件夹结构。将项目复制到Xcode中的组不会将其复制到该文件夹

此外,在编译过程中,整个文件夹层次结构都会变平,因此在MainBundle中,所有内容都在根目录中(没有文件夹),因此在开发时请记住这一点


至于测试,您是否尝试过从设备中完全删除应用程序(并重置模拟器),然后重新添加?在部署时,Xcode喜欢使用快捷方式并缓存很多东西,因此时不时地将其清除是一件好事。

可能重复的问题请编辑您以前的问题,而不是再次发布关于同一问题的问题。如果您查看我的答案,它将为您提供一种信心十足的测试方法。也照凯文的建议去做。清洁的