Re: NSInvocation question
Re: NSInvocation question
- Subject: Re: NSInvocation question
- From: Nir Soffer <email@hidden>
- Date: Fri, 22 Feb 2008 02:42:06 +0200
On Feb 21, 2008, at 18:22, Hank Heijink wrote:
I have a document-based application, and my NSDocument subclass
runs an experiment which amounts to invoking NSInvocations based on
certain conditions. These NSInvocations retain their arguments, and
the target of the NSInvocation is the NSDocument subclass. I need
to record these invocations as well, so I made a class MVAction as
follows:
@interface MVAction : NSObject <NSCoding> {
NSInvocation *action;
double invocationTime;
NSString *type;
NSArray *arguments;
}
The type is a string representation of the selector used in the
NSInvocation and the arguments are the arguments of the
NSInvocation. I did it like this because you can't encode an
NSInvocation, and I don't need the actual invocation anyway. My
document has an instance variable NSMutableArray *actions in which
these MVActions are stored.
The problem I have is this: when I close my document, it isn't
deallocated. If the invocations don't retain their arguments, that
problem is gone, but I do need to retain them. What's a good way to
solve this? I could release the NSInvocation *action when I put an
MVAction in the array, but I wonder if there's a better method.
You have a retain cycle - the document retain the array which retain
the invocation, which retain the document.
If you save the target, selector and arguments, you can invoke the
selector without NSInvocation. Don't retain the target.
Best Regards,
Nir Soffer
_______________________________________________
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