【问题标题】:Why does a message send cause a retain cycle warning in ARC, but a property set does not?为什么在 ARC 中发送消息会导致保留周期警告,但属性集不会?
【发布时间】:2012-12-24 05:36:22
【问题描述】:
[self.foo setBlock:^{
    [self doSomething]; // causes warning
}];

[self.foo setBlock:^{
    self.bar = baz;     // does not cause warning
}];

警告“在此块中强烈捕获 self 可能会导致保留周期。”

两者都不会导致强引用吗?

【问题讨论】:

  • 如果将第二个示例更改为[self setBar:baz];,您会收到警告吗?
  • 是的,如果我通过该语法设置属性,那么我会这样做。
  • 编译器错误。可能会在以后的版本中修复。
  • 我明白了。这是 xcode 4.5 FWIW。
  • 很奇怪。 self.bar = baz[self setBar:baz] 应该是相同的:/

标签: ios objective-c memory memory-management automatic-ref-counting


【解决方案1】:

这是一个编译器错误,您应该向 Apple 提交错误报告。

两者都是一样的,a.b = c 只是写[a setB: c] 的方式不同。如果编译器处理一个与另一个不同,这就是一个错误。

【讨论】:

    猜你喜欢
    • 2016-01-03
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多