在ARC中归零弱引用

Dan*_*ark 44 objective-c clang automatic-ref-counting

如果我读到Mike Ash的"归零弱引用"文章是正确的,那么弱引用就像assign没有ARC的引用一样.但是,如果引用的对象被释放,而不是获得"悬空指针"(意味着指向解除分配的对象的指针),则指针将设置为nil.

这是正确的吗,这是否会在标记的任何财产weakassign(当ARC处于活动状态时)发生?

如果这是正确的,这将消除很多SIGABRT.

cob*_*bal 38

它大部分都是正确的,但assign属性仍然与以前一样对待,只有属性weak为零.另一个警告是,仅在Mac OSX≥10.7和iOS≥5时可以使用归零弱引用.虽然ARC的其余部分被反向移植到10.6和iOS 4,但在这些OS上根本不能使用弱引用.

  • 谢谢@cobbal.至少在XCode 4.2 beta中,如果您的部署目标是<iOS 5,则不能在属性声明中使用`weak`:您必须使用`assign`.消息是"错误:当前部署目标不支持自动__weak引用" (6认同)
  • 它确实是@MarkAdams,但顾名思义它们是不安全的.当弱引用指向的对象被破坏时,弱引用变为零.但是,对于unsafe_unretained引用,引用指向相同(现已解除分配)的内存块,并且发送给它的任何消息都可能导致段错误. (3认同)