0

当子类化时,我倾向于为我的所有属性赋予属性(非原子,强),除了 IBOutlet,当不是 nib 中的顶级对象时,它们是(非原子,弱)。

是否存在这样的习惯可能不安全,并创建保留循环或产生其他此类负面影响的情况?

谢谢你。

4

2 回答 2

1

对于 NSStrings,您应该使用 (nonatomic, copy)。

于 2012-07-19T23:46:16.920 回答
1

是的,这种习惯可能是不安全的,因为您似乎并没有真正遵循属性属性赋予的规则。

正确的做法是考虑如何使用该属性并为其赋予相应的属性。

这可能出错的一些情况是:

  • 代表:保留周期。
  • 内存管理:在 2 个类之间共享的图像不能再使用,您必须在两者上都将其设为 nil。
  • 线程:将被多个线程访问的属性。

为您提供的快速指南:

如果该属性主要属于该类,即使该类可能共享它:强该类需要该属性才能工作:强(但当您不再需要它时不要忘记将指针归零)如果该属性属于另一个类:弱代表:弱 IBOutlets:弱

对于并发属性,您通常可以使用非原子属性,除非您知道该属性可能被多个线程使用,然后将其设置为原子属性。

这只是一个非常模糊的指南,但在 ARC 下对我来说效果很好。

于 2012-07-20T00:19:52.060 回答