iOS 私有 api 使用:_Unwind_Resume
Posted
技术标签:
【中文标题】iOS 私有 api 使用:_Unwind_Resume【英文标题】:iOS private api usage: _Unwind_Resume 【发布时间】:2013-09-11 01:56:57 【问题描述】:我正在尝试为 ios7 准备一个应用程序以供审核,但我碰上了这堵砖墙:
应用在....中引用非公开符号_Unwind_Resume
在 Release-iphoneos 内部,我试图找到罪魁祸首
nm -u *.a | grep -C 20 Unwind_Resume
但看起来每个依赖项都会在某个时候列出Unwind_Resume
。
这可能是什么原因造成的?如何从这里调试?
【问题讨论】:
_Unwind_resume
在由于异常而发生清理后恢复展开。如果您使用 C++ 或 ObjC++,这必然会发生。我不确定为什么 Apple 将其标记为“私有 API”:这些调用是(或应该是)编译器生成的。我会问苹果这个。
我认为是这样的。收到该消息后,我尽快通过电子邮件发送了支持联系人。我真的希望在 iOS7 的第一天就可以使用。啊。
【参考方案1】:
我们的 iOS 库也给我们的开发人员带来了验证错误 - 我们的库的修复最终非常简单。
-
运行产品 > 分析(针对库,而不是应用!)
修复任何“API 滥用”错误 - 对我们来说,这是一些随机的“参数可能为空”通知
重建
这为我们和我们的客户解决了问题,与 Unwind_Resume
或任何私有 api 无关。
【讨论】:
我这样做了,看到两个问题,更正了它们,同样的错误信息。【参考方案2】:现在应该在 App Store Validator 中修复此问题。请再试一次。
【讨论】:
【参考方案3】:我遇到了同样的问题。我通过在不启用 64 位的情况下重建来解决它。在 Xcode 中禁用 64 位构建:
在右侧的文件浏览器中选择应用程序 转到主窗口中的“构建设置”选项卡 向下滚动到架构组并查看架构设置的值。 是否设置为“标准架构(包括 64 位)。如果是这样,请切换到“标准架构(armv7、armv7s)”我不确定这是否是验证阶段的错误,或者是否存在阻止开发人员在任何人有实际硬件进行测试之前提交 64 位应用程序。
--克里斯
【讨论】:
【参考方案4】:我对我的提交进行了二进制搜索,在某些时候,我搞砸了 project.pbx* 设置。我的一个 pod 依赖项将 build-active-architecture-only 设置为 YES。
我重新提交,再次设置所有架构目标,并通过了验证。
【讨论】:
以上是关于iOS 私有 api 使用:_Unwind_Resume的主要内容,如果未能解决你的问题,请参考以下文章