Strong/retain for next, weak/assign for previous. 
On Nov 14, 2012, at 7:59 PM, William Squires wrote:

> Let's say I have:
> 
> @interface Thing : NSObject
> 
> @property (nonatomic, ???) Thing *nextThing;
> @property (nonatomic, ???) Thing *prevThing;
> 
> @end
> 
> and somewhere I keep a reference to the 'head' of this doubly-linked list. 
> What should ??? be, "retain", or "assign" in order to work properly? If I was 
> using ARC instead, would they be "strong" or "weak"? Assuming the list 
> doesn't contain circular references (i.e. a<->b<->c<->a) will releasing my 
> 'head' reference properly clean up if I have:
> 
> "doublist.h"
> @class Thing;
> 
> @interface DoublyLinkedListClass
> 
> @property (nonatomic, retain) Thing *head;
> 
> @end
> 
> "doublist.m"
> @implementation DoublyLinkedListClass
> 
> @synthesize head = _head;
> 
> …
> 
> -(void)dealloc
> {
> self.head = nil; // Is this begging for a problem?
 no in ARC (but it's unnecessary), yes in MRC; you should [head release]; 
instead, or you'll leak memory.

-Dan
_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to