On Feb 26, 2008, at 9:14 PM, Nir Soffer wrote:

Turns out garbage collection was doing me in.  When the
NSURLConnection object was hanging out waiting for a response, it
would get collected.  To work around this, after creating the
NSURLConnection object I just stick it in a NSMutableSet.  When the
delegate gets the -connectionDidFinishLoading: message I remove the
connection object from the set.  Works great now.

Any object you create on the stack will be gone when the method is finished :-)

You must keep a reference to the connection.

Or how about turning off garbage collection temporarily for the object? Something like:

Create the connection and make sure it sticks around:

theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; [[NSGarbageCollector defaultCollector] disableCollectorForPointer:theConnection];


Clean up when done:

- (void)connection:(NSURLConnection *)connection didFailWithError: (NSError *)error
{
        [...do your processing...]
[[NSGarbageCollector defaultCollector] enableCollectorForPointer:connection];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
        [...do your processing...]
[[NSGarbageCollector defaultCollector] enableCollectorForPointer:connection];
}

This seems like less hassle to me, but I don't know if it is good form. Is it really better keep a strong reference to the connection object, and if so, why?

António

-----------------------------------------
Perfume is the forgiveness
that the trampled flower casts
upon the heel that crushes it.
-----------------------------------------



_______________________________________________

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