@synthesize of 'weak' property 仅允许在 ARC 或 GC 模式下使用 urbanship 首次编译

Posted

技术标签:

【中文标题】@synthesize of \'weak\' property 仅允许在 ARC 或 GC 模式下使用 urbanship 首次编译【英文标题】:@synthesize of 'weak' property is only allowed in ARC or GC mode with first compile of urbanship@synthesize of 'weak' property 仅允许在 ARC 或 GC 模式下使用 urbanship 首次编译 【发布时间】:2013-09-26 23:44:34 【问题描述】:

基本上,我有一个可以正常运行的 ios 应用程序。

按照http://docs.urbanairship.com/build/ios.html#ios-push-getting-started 的说明,我到达了“Register Your Device”部分,要求我进行编译。

尝试在 xCode 5 中构建代码后,我收到以下错误“@implementation UAPushSettingsAddTagViewController @synthesize of 'weak' property is only allowed in ARC or GC mode”。

注意:ARC 模式未使用。

【问题讨论】:

【参考方案1】:

在您的项目代码和您包含的库中搜索“弱”。将其更改为“分配”

编辑:

正如@TaylorHalliday 在下面的评论中指出的那样,我的回答相当不完整。

将弱属性更改为分配将消除编译器错误,但如果您不了解如何使用手动引用计数,则可能会导致内存管理问题。

由于您使用的是手动引用计数,因此您需要检查您的代码并确保您保留了需要持久化的对象,然后在完成处理后释放对对象的所有拥有引用。解释细节超出了论坛帖子的范围。我建议您在 Xcode 帮助系统中搜索“关于内存管理”,并阅读整个高级内存管理指南。

您可能还应该在您的项目上运行分析工具以查找可能的内存管理问题。

更好的是,将您的项目转换为使用 ARC。使用 ARC 时更容易避免内存管理问题。

【讨论】:

那么接受答案吗? 是的。我不再有这个问题。公认。谢谢。 建议在不知道区别的情况下将项目中的所有“弱”属性标志更改为“分配”,您不觉得有点粗心吗?或者为什么? @TaylorHalliday,在我编辑我的答案以提供更多背景信息并谨慎对待更改要分配的弱属性后,您是否会考虑删除您的反对票? 我已经搜索了 3 个小时来解决这个问题!非常感谢:)【参考方案2】:

当我将these two files 添加到我的项目时,我遇到了同样的错误。我的项目未启用 ARC。我必须先删除这些文件,然后必须将我的项目转换为 ARC。然后添加这些文件不会导致错误。

【讨论】:

值得注意的是,我在一个已转换为 ARC 的项目中遇到了这个问题。删除文件然后将其添加回项目解决了问题。

以上是关于@synthesize of 'weak' property 仅允许在 ARC 或 GC 模式下使用 urbanship 首次编译的主要内容,如果未能解决你的问题,请参考以下文章

What is the bottleneck and weakness of AlphaGo?

Making up VMs from Many Weak Nodes of Edge Computing

Making up VMs from Many Weak Nodes of Edge Computing

iOS闪退:Cannot form weak reference to instance (xxx) of class

iOS闪退:Cannot form weak reference to instance (xxx) of class

iOS闪退:Cannot form weak reference to instance (xxx) of class