如何将-fobjc-arc-exceptions标志正确地添加到XCode中?

4si2a6ki  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在使用https://github.com/williamFalcon/SwiftTryCatch作为一个罕见的NSInternalInconsistencyException事件的变通方案。
下面是代码片段。

private func safePerformBatchUpdates(_ updates: (() -> Void)?, completion: ((Bool) -> Void)? = nil) {

    SwiftTryCatch.try({
        collectionView.performBatchUpdates(updates, completion: completion)
    }, catch: { (error) in
        print("\(error)")
        
        Crashlytics.crashlytics().record(error: error)
        
        recoverFromPerformBatchUpdatesError()
    }, finally: nil)
}

https://github.com/williamFalcon/SwiftTryCatch中,提到
有人指出,如果没有-fobjc-arc-exceptions标志,这将导致内存泄漏http://clang.llvm.org/docs/AutomaticReferenceCounting.html#exceptions因此,ARC生成的代码在发生异常时默认会泄漏,如果进程无论如何都要立即终止,这是很好的。关心从异常恢复的程序应该启用该选项。
有人知道我如何正确地将-fobjc-arc-exceptions标志添加到我的XCode中吗?
这些是我正在尝试的步骤
1.选择项目窗口左上角的项目。
1.选择目标。
1.打开生成阶段窗格。
1.选择“编译源”
现在,大约有500多个源代码文件。我想知道,我应该
1.是否仅将-fobjc-arc-exceptions标志添加到文件SwiftTryCatch.hSwiftTryCatch.m
1.仅将-fobjc-arc-exceptions标记添加到文件SwiftTryCatch.hSwiftTryCatch.m和任何使用SwiftTryCatch的 *.swift文件?
1.将-fobjc-arc-exceptions标志添加到所有500多个文件?
谢谢你。

rsl1atfo

rsl1atfo1#

您需要编译 * 引发 * -fobjc-arc-exceptions异常的文件,因此您需要重新编译UIKit(或者CoreData),但您不能这样做。
还要注意-fobjc-arc-exceptions只是帮助防止某些类型的内存泄漏。它并没有使调用成为异常安全的。异常仍然可以使系统处于未定义的状态,这取决于代码是如何编写的。有时这种未定义的状态不会导致任何实际问题,但通常不可能从异常中恢复。

相关问题