调试和发布之间的区别

时间:2013-04-02 09:51:53

标签: ios objective-c debugging release testflight

我有一个运行同步算法的应用程序。

当我在调试模式下构建并运行它(在我的iPhone 5上)时,一切正常。

但是,当我将其存档并将其上传到TestFlight然后下载并安装到同一iPhone 5时,部分同步不起作用。

它没有崩溃或任何事情,它只是不运行同步的那一部分。

愚蠢的是,它是一个未运行的单个函数内的代码行。该功能中的其他所有内容都会运行。

我不知道从哪里开始寻找这个。

修改

在Mindaugas的帮助下,我发现了为什么以及哪些代码没有被运行。

功能是......

- (void)uploadData
{
    NSLog(@"pushing photos");
    for (StoredImage *storedImage in self.recordArray) {
        NSURL *url = [self urlForImageUpload:storedImage];

        if (url == nil) {
            continue;
        }

        ImageUploadOperation *uploader = [[OJFImageUploadOperation alloc] init];
        uploader.image = storedImage.image;
        uploader.url = url;
        [self.recordQueue addOperation:uploader];
    }
}

当我将优化级别设置为“最快,最小”时,它似乎会破坏此功能的顺序。

当它进入时我可以看到数组中有一个对象并且它进入循环。但随后它完全跳过第一行NSURL *url = [self urlForImageUpload:storedImage];并走到尽头。所以上传永远不会真正开始,它会移动到下一个项目。

1 个答案:

答案 0 :(得分:9)

默认情况下,发布配置使用与调试配置不同的代码优化,因此可以优化和跳过某些代码行

您可以在以下位置检查/更改配置 目标 - >构建设置 - >搜索优化级别