如何添加-fobjc-arc-exceptions标志正确到Xcode?



我使用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. 选择项目窗口左上角的项目。
  2. 选择目标。
  3. 打开构建阶段窗格。
  4. 选择"编译源">

现在,大约有500多个源代码文件。我在想,我是否应该

  1. 只添加-fobjc-arc-exceptions标志,SwiftTryCatch.hSwiftTryCatch.m文件?
  2. 只添加-fobjc-arc-exceptions标志,文件SwiftTryCatch.h,SwiftTryCatch.m和任何*.swift文件使用SwiftTryCatch?
  3. 添加-fobjc-arc-exceptions标志到所有500+文件?

需要编译-fobjc-arc-exceptions中引发异常的文件。所以你需要重新编译UIKit(或者可能是CoreData),这是你不能做的。

还要注意-fobjc-arc-exceptions只是帮助防止某些类型的内存泄漏。它不会使调用成为异常安全的。异常仍然可以使系统处于未定义状态,这取决于代码的编写方式。有时这种未定义状态不会引起任何实际问题,但通常不可能从异常中恢复。

相关内容

  • 没有找到相关文章

最新更新