Xcode 4.2, 10.7 SDK, target 10.6, ARC ("weak" pointers must be 
unsafe_unretained).

I had the following problem, which I solved, but I don't trust the solution:

When I used heapshotting to see what happened when I repeatedly opened and 
closed my document, I was accumulating a lot of memory as the document and its 
data were never released. All the retains and releases with my code in the 
stack trace were balanced.

The document's NIB (no, I don't put the document in the NIB, and I'm using the 
window controller that comes with the document) contains an NSObjectController 
and an NSArrayController at the top level. Per "Patterns for Managing Outlets 
Become Consistent Across Platforms" in the "Transitioning to ARC Release 
Notes," the IBOutlet properties for those controllers were declared strong.

But my residual retain count was 2, and a couple of the retains were in the 
NIB-loading mechanism, so I tried setting the outlets for those controllers to 
nil at -windowWillClose: time. 

This cured the leak. So did making the outlets unsafe_unretained (though that 
leaked slightly more).

I don't see that there should be _harm_ in this, but I worry, because it goes 
against the documentation (at least the documentation I could find). I've 
developed a theory, and I'd like to know if it's superstitious:

• For projects targeting 10.7 or later, and using ARC, the references should be 
strong, as documented. (But how does the OS know whether that class in 
particular is using ARC? Products can be mixed.)

• If the target is 10.6, even if running on 10.7, regardless of whether ARC is 
used, the references should be unsafe_unretained/assign, to match the behavior 
of the target operating system.

Do I have this right?

        — F

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to