ios - Delegates - retain or assign - release? -


i've seen number of posts related delegates, , know proper way reference them. suppose have object declared like:

@interface myviewcontroller : uitableviewcontroller {     id delegate;     } @property (nonatomic, retain) id delegate; @end 

through lifecycle of myviewcontroller, make calls methods of delegate in response interaction user.

when it's time rid of instance of myviewcontroller, delegate ivar need release'ed in implementation's dealloc method since declared retain?

or conversely, should delegate retained? perhaps should @property (nonatomic, assign) id delegate? according apple's docs:

retain ... typically use attribute scalar types such nsinteger , cgrect, or (in reference-counted environment) objects don’t own such delegates.

normally i'd go docs say, i've seen lot of code calls retain on delegate. "bad code?" defer experts here... proper way handle this?

you want assign delegates rather retain them, in order avoid circular retain counts object retains object b , object b retains object a. (you might see referred keeping "weak reference" delegate.) example, consider following common pattern:

-(void)somemethod {     self.utilityobject = [[[bar alloc] init] autorelease];     self.utilityobject.delegate = self;     [self.utilityobject dosomework]; } 

if utilityobject , delegate properties both declared using retain, self retains self.utilityobject , self.utilityobject retains self.

see why objective-c delegates given property assign instead of retain? more on this.

if assign delegate rather retaining don't need worry releasing in dealloc.


Comments

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

windows - Python Service Installation - "Could not find PythonClass entry" -

Determine if a XmlNode is empty or null in C#? -