调试和发布之间的区别

Fog*_*ter 1 debugging release objective-c ios 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];
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Min*_*gas 9

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

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