Ios 调试和发布之间的区别

Ios 调试和发布之间的区别,ios,objective-c,debugging,release,testflight,Ios,Objective C,Debugging,Release,Testflight,我有一个运行同步算法的应用程序 当我在调试模式下构建并运行它(在我的iPhone5上)时,一切正常 然而,当我将其存档并上传到TestFlight,然后下载并安装到同一个iPhone5时,部分同步就不起作用了 它不会崩溃或者其他什么,只是没有运行同步的那个部分 愚蠢的是,它是单个函数中没有运行的一行代码。该函数中的其他所有内容都会运行 我不知道从哪里开始找这个 编辑 在Mindaugas的帮助下,我已经找到了不运行代码的确切原因和代码位 功能是 - (void)uploadData {

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

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

然而,当我将其存档并上传到TestFlight,然后下载并安装到同一个iPhone5时,部分同步就不起作用了

它不会崩溃或者其他什么,只是没有运行同步的那个部分

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

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

编辑

在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]并转到末尾。因此,上载实际上从未启动,而是移动到下一项。

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

您可以在以下位置检查/更改配置:
目标->构建设置->搜索优化级别默认情况下,发布配置使用与调试配置不同的代码优化,因此可以优化和跳过某些代码行

您可以在以下位置检查/更改配置:
Target->Build Settings->search for Optimization Level

我唯一的想法是,如果调用在NSAssert方法中,那么它将变成no-op。您的应用程序有权限执行此类操作吗?我现在不使用NSAssert。我只是添加了一些TestFlight检查点,以确定哪个位没有运行。我唯一的想法是,如果调用在NSAssert方法中,那么它将变成no-op。您的应用程序有特权执行此类操作吗?我现在不使用NSAssert。我只是添加了一些TestFlight检查点,以确定哪个位没有运行。谢谢!我现在可以通过将调试优化级别更改为“最快最小”来复制它。然而,我不知道为什么会有效果?这就是优化的目的。若编译器认为某些代码行不产生任何输出,并且对其他部分并没有任何影响,那个么它将跳过这一点。。我想其他人可以详细阐述这个话题……啊,再次感谢。好吧,我已经有了更深入的了解,现在我知道(在你的帮助下)哪一位没有运行。我要补充一个问题。嗯,我已经修好了,但是修好很奇怪,不知道为什么它能工作。不,和以前不工作相比…谢谢!我现在可以通过将调试优化级别更改为“最快最小”来复制它。然而,我不知道为什么会有效果?这就是优化的目的。若编译器认为某些代码行不产生任何输出,并且对其他部分并没有任何影响,那个么它将跳过这一点。。我想其他人可以详细阐述这个话题……啊,再次感谢。好吧,我已经有了更深入的了解,现在我知道(在你的帮助下)哪一位没有运行。我要补充一个问题。好吧,我已经修复了它,但是修复很奇怪,不知道为什么它能工作。不,与以前不工作相比。。。