Ios Xcode 4.5.1存档时卡住

Ios Xcode 4.5.1存档时卡住,ios,iphone,xcode,ios5,ios6,Ios,Iphone,Xcode,Ios5,Ios6,我刚刚将xcode升级到4.5.1版 以前一切都很好,但现在,当我归档项目时,xcode被卡住/挂起,永远无法完成归档。 在顶部的状态中,文本显示: 正在编译10个源文件中的10个 之后什么也没发生。它只是卡住了。 我仍然可以编译和构建代码(无需存档),并且在模拟器中一切都可以正常运行。 我已经重新安装了xcode。此后问题仍然存在。 任何建议都将被采纳。 更多信息: 我已经将问题精确定位到一行特定的代码中:CGRect tmpFrame3=seedTailsbutton.frame 我看这条

我刚刚将xcode升级到4.5.1版
以前一切都很好,但现在,当我归档项目时,xcode被卡住/挂起,永远无法完成归档。
在顶部的状态中,文本显示:

正在编译10个源文件中的10个

之后什么也没发生。它只是卡住了。
我仍然可以编译和构建代码(无需存档),并且在模拟器中一切都可以正常运行。

我已经重新安装了xcode。此后问题仍然存在。
任何建议都将被采纳。

更多信息:
我已经将问题精确定位到一行特定的代码中:
CGRect tmpFrame3=seedTailsbutton.frame
我看这条线没有任何问题…

为什么它在模拟器中构建和运行时工作正常,但在存档时却失败了?

我知道了这里发生了什么。
首先,它与归档过程本身无关,而是与内置发布模式相关。
我在归档过程中遇到问题的原因是因为它是在发布模式下生成的。

关于问题本身:
似乎在xcode 4.5.1中存在某种苹果编译器错误 我正在使用Apple LLVM编译器4.1。在编译过程中,它有不同的优化级别。
在调试中-优化设置为“无”并关闭。在发行版中,它被设置为“最快、最小[-Os]”。当我在发布模式下关闭优化时(将其设置为“无”),问题不会发生。

更多信息:
在深入研究我的代码并试图找出在优化过程中导致编译器错误的原因后,我发现我有以下几点:

__weak ProfileButton *tmp = myButton;
其中ProfileButton只是从UIButton继承的常规按钮。

当我移除
\u弱
时,一切都正常。甚至当我将编译器优化设置为“最快、最小的[-Os]”时。

最近也遇到了同样的问题,在编译过程中,Xcode挂在最终文件上。与上述问题相同,将release的优化级别设置为None([-O0]以匹配调试模式)将允许归档成功运行

然而,对于我们的代码,特定的bug被绑定到一个捕获self的块上。Per:

“如果需要在块中捕获自我,例如在定义 回调块,考虑内存管理是很重要的 影响

块保持对任何捕获对象的强引用,包括 self,这意味着很容易得到一个强引用 循环……”


因此,如果适用,请务必检查您的代码,并遵循苹果的最佳实践来捕获对self()的弱引用。

在我的例子中,我创建了一个Cirric子类

就像

@interface BaseTableViewController : PaymentTableViewController 

我所做的是重新命名最后一个子类,所以它现在看起来是这样的:

@interface TopTableViewController : PaymentTableViewController 
NSArray<NSArray<NSNumber *> *> *points =
    @[
        @[@38.576732f, @-90.230682f, @1495320246], // 1 item
        ...
        @[@37.478034f, @-89.524851f, @1495336147] // 3000 item
    ];


在我的例子中,当一个源文件包含这样一个非常大的数组声明时,就会出现问题:

@interface TopTableViewController : PaymentTableViewController 
NSArray<NSArray<NSNumber *> *> *points =
    @[
        @[@38.576732f, @-90.230682f, @1495320246], // 1 item
        ...
        @[@37.478034f, @-89.524851f, @1495336147] // 3000 item
    ];
NSArray*点=
@[
@[@38.576732f、@90.230682f、@149530246],//1项
...
@[@37.478034f、@89.524851f、@1495336147]//3000件
];
大约有3千件物品。将源代码行拆分为小代码行没有帮助

通过将项目放置在CSV文件中并在运行时对其进行解析,修复了此问题


另一种方法是拆分成更小的数组,并在运行时进行连接。

日志窗格如何;这将告诉你当Xcode被卡住时它在做什么…你有旋转的色轮吗?当bug发生时-日志窗格被卡住了,没有任何关于它的说明。我没有旋转的色轮。它只是卡住了。我已经发现了问题所在,并发布了我的答案。谢谢。很遗憾,Xcode 5.1、LLVM 5.1代码生成器对我来说不起作用