On Mar 23, 2008, at 8:55 PM, Samvel wrote:

I have defined class (say, Download) that uses NSURLConnection to download something from internet. My application is Cocoa with UI. I want to call:

[Download cancel]

and wait for notification from this class once user quits application. Reasoning: my Download class should cancel connection and perform some operations before object can be released in program. Thus I can not simply deallocate Download instance in dealloc method.

So, the idea is: instead of calling [myDownload cancel] from dealloc method delay application quit until all steps are completed in Download. Thus call [myDownload cancel] and wait for Notification say DownloadCanceled. Only then deallocate object.

Is there any way to figure out when user initiated quit application? How to delay it?

I think there should be something pretty much similar to awakeFromNib but called at the very end upon application quit.

What Sherm told you is correct. However, I think this is largely unnecessary.

When an application quits, it does _not_ properly release all of your objects. Thus, their dealloc methods are generally not called. This is a deliberate optimization since there's no point in manually cleaning up the process memory. The kernel will completely eliminate the process address space (and do other cleanup) when the process exits. The TCP socket underlying the NSURLConnection will be closed, too.

Some things may need to be cleaned up, like a temp file holding the data for the in-progress download. For that, you can probably simply remove the file immediately at the point of applicationWillTerminate:. There's no need to delay the quitting in that case.

Cheers,
Ken
_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to