ios - 自动 ARC 转换后 : Assigning retained object to unsafe property; object will be released after assignment

标签 ios xcode automatic-ref-counting

我刚刚使用 Xcode 的自动重构将一个旧项目转换为 ARC。

@property (nonatomic, retain) NSMutableArray *cards;

被替换为:

@property (nonatomic) NSMutableArray *cards;

这是有道理的,因为我读到的是“强”是默认状态。但是,以下行在标题中给我错误:

self.cards = [[NSMutableArray alloc] initWithCapacity:54];

通过在原来保留的位置添加 strong 来解决错误:

@property (nonatomic, strong) NSMutableArray *cards;

但是...如果我需要返回并将strong 放入每个保留 的@property 声明...为什么 ARC 重构将它们全部删除?

最佳答案

我遇到了同样的警告并打开了技术支持事件。工程师确认默认值已从“assign”更改为“strong”,以保持 ARC 内的一致性。

他说警告和文档都是错误的,将被修复。在此之前,我会完全避免隐式默认!

明确添加“strong”(如 BJ Homer 建议的那样)是消除警告并兼容的安全方法。但是不要假设默认情况下不保留属性。也始终将“weak”或“assign”放在那里。

编辑:clang documentation现在正式记录此更改。警告已fixed .

编辑 2:Xcode 4.4 显然包含修复。

关于ios - 自动 ARC 转换后 : Assigning retained object to unsafe property; object will be released after assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752525/

相关文章:

objective-c - 从弱链接的 iOS 类或不在部署目标 iOS 版本中的类继承

ios - 为什么乘法器在 Xcode 中被禁用?

ios - 存折 pass 不使用 "\r\n"输入换行符

iphone - 设置默认固定空间 UIBarButtonItem 宽度

swift - 我怎样才能在 swiftUI 中制作一堆垂直 slider

c++ - SDL 窗口不显示

objective-c - 运行时编程动态方法时使用 ARC 编译时出错

iphone - 带有 ASIHTTPRequest 的 ARC

ios - 在非官方库中禁用 ARC 会导致 Apple 出现问题?

ios - 使用导航 Controller 后选项卡栏项目图标丢失