If my reading of Mike Ash's "Zeroing Weak References" writeup is correct, weak references are like assign
references without ARC. However, if the referenced object is deallocated, instead of getting a "dangling pointer" (meaning a pointer that points to a deallocated object), the pointer gets set to nil
.
Is this right, and does this happen with any property marked weak
or assign
(when ARC is active)?
If this is correct, this would eliminate a lot of SIGABRTs.
Best Answer
It's mostly right, but
assign
properties are still treated the same as they ever were, onlyweak
ones are zeroing. Another caveat is that zeroing weak references are only available in Mac OS X ≥ 10.7 and iOS ≥ 5. While the rest of ARC was backported to 10.6 and iOS 4, weak references cannot be used at all on these OS's.