Re: ARC Release too soon
Re: ARC Release too soon
- Subject: Re: ARC Release too soon
- From: Dave <email@hidden>
- Date: Tue, 19 Mar 2013 13:10:32 +0000
On 16 Mar 2013, at 21:52, Kevin Muldoon wrote:
I'd think adding the WindowController to a @property (strong,
nonatomic) NSArray *array; would keep those objects alive. Most
often, I would simply add each WindowController (or in my case,
ViewController) one-at-a-time in the .h. I simply feel it's clearer
to see.
@property (strong, nonatomic) RJLarryViewController
*larryViewController;
@property (strong, nonatomic) RJCurleyViewController
*curleyViewController;
@property (strong, nonatomic) RJMoeViewController *moeViewController;
Yeah, but since he isn't tracking the closing (disposing) of the
window's, he can't then release the reference, so it will leak.
Probably the best way I can think of to do it elegantly, would be to
write a wrapper manager class around the window's which tracks when
they are to be disposed of and removes the corresponding entry is a
dictionary or array. One thing you can do is to convert the Object
pointer to a hex string and use this as a key into a dictionary. Then
just check if *that* window object is being disposed of and is in the
dict, remove it.
e.g.
obj* myObj;
myObjKey = [[NSStriing alloc] initWithFormat:@"%p",myObj];
When you create a new window, do something like this:
[WRAPPERCLASS addWindow:myWindow];
addWindow:myWindow, adds it to the dict and sets a monitor for it
closing.
One thing that puzzles me is, in the non ARC build, don't you get an
Analyzer Warnings on this?
Cheers
Dave
On Mar 16, 2013, at 5:38 PM, Chris Paveglio
<email@hidden> wrote:
Sure I totally understand that. My question is more of "what is
the most elegant way to do it". Add them to an array?
----- Original Message -----
From: iain <email@hidden>
To: Chris Paveglio <email@hidden>
Cc: Cocoa Dev List <email@hidden>
Sent: Saturday, March 16, 2013 2:35 PM
Subject: Re: ARC Release too soon
On 16 Mar 2013, at 06:16 PM, Chris Paveglio
<email@hidden> wrote:
So, am I doing some fundamental window management wrong (not sure
since old app worked OK and didn't seem to leak), or how do I do
something so ARC doesn't dealloc window controllers at the end of
the function that fires them off
If you want the window controllers to hang around after the
function finished you need to assign them to a strong variable
otherwise they will be released.
Iain
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
40gmail.com
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
40looktowindward.com
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden