Thanks for logging the bug about the delegate property.

I think the issue of the callbacks not occurring was being caused by my
delegate object running on a background thread and then the thread ending
before the callback could occur.  It works now so that I can do:

NSURLConnection conn = new NSURLConnection(req, this);
and this registers the objective-c selectors to be the NSURLConnection
delegate.

Duane


On Tue, Nov 17, 2009 at 5:01 AM, Laurent Etiemble <
[email protected]> wrote:

> Hello,
>
> I will log a bug about the delegate property, as obviously it was
> mis-generated. For the rest, can you provide a small test-case ?
>
> Regards, Laurent Etiemble.
>
> 2009/11/15 Duane Wandless <[email protected]>:
> > Some more info.  I am on Snow Leopard but get the same results on
> Leopard.
> > I took the code from NSURLConnection.SetDelegate() and moved it into my
> code
> > like this:
> >
> >                 Action<NSURLConnection.NSURLConnectionEventDispatcher>
> > assignment =
> >                 (d =>
> >                     {
> >                         d.ConnectionDidCancelAuthenticationChallenge +=
> new
> >
> NSURLConnection.ConnectionDidCancelAuthenticationChallengeEventHandler(d_ConnectionDidCancelAuthenticationChallenge);
> >                         d.ConnectionDidFailWithError += new
> >
> NSURLConnection.ConnectionDidFailWithErrorEventHandler(d_ConnectionDidFailWithError);
> >                         d.ConnectionDidFinishLoading += new
> >
> NSURLConnection.ConnectionDidFinishLoadingEventHandler(d_ConnectionDidFinishLoading);
> >                         d.ConnectionDidReceiveAuthenticationChallenge +=
> new
> >
> NSURLConnection.ConnectionDidReceiveAuthenticationChallengeEventHandler(d_ConnectionDidReceiveAuthenticationChallenge);
> >                         d.ConnectionDidReceiveData += new
> >
> NSURLConnection.ConnectionDidReceiveDataEventHandler(d_ConnectionDidReceiveData);
> >                         d.ConnectionDidReceiveResponse += new
> >
> NSURLConnection.ConnectionDidReceiveResponseEventHandler(d_ConnectionDidReceiveResponse);
> >                         d.ConnectionWillCacheResponse += new
> >
> NSURLConnection.ConnectionWillCacheResponseEventHandler(d_ConnectionWillCacheResponse);
> >                         d.ConnectionWillSendRequestRedirectResponse +=
> new
> >
> NSURLConnection.ConnectionWillSendRequestRedirectResponseEventHandler(d_ConnectionWillSendRequestRedirectResponse);
> >                         d.ConnectionDidSendBodyData += new
> >
> NSURLConnection.ConnectionDidSendBodyDataTotalBytesWrittenTotalBytesExpectedToWriteEventHandler(d_ConnectionDidSendBodyData);
> >                     });
> >                 NSURLConnection.NSURLConnectionEventDispatcher @delegate
> =
> > new NSURLConnection.NSURLConnectionEventDispatcher();
> >                 assignment(@delegate);
> >                 NSURLConnection conn = new NSURLConnection(req,
> @delegate);
> >
> > Also added some logging to
> > NSURLConnectionEventDispatcher.RespondsToSelector() and I do see in the
> log
> > some requests to see if my delegate responds to:
> > selector
> > connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
> > selector connection:canAuthenticateAgainstProtectionSpace:
> > selector connection:needNewBodyStream:
> >
> > But only these 3.  I added the ConnectionDidSendBodyData event, which is
> > also not called.  I did do the same code in obj-c and the same 3
> selectors
> > are checked plus a few extra.  And the didSendBodyData selectors is
> called
> > in obj-c.
> >
> > Because of the logging I know that the @delegate is being inspected by
> > NSURLConnection.  But after those 3 no selectors are called on
> > NSURLConnectionEventDispatcher.  I even tried just returning true to
> > respondsToSelector hoping to raise an error, but that did not.
> >
> > Any help would be greatly appreciated.
> >
> > Duane
> >
> > On Sat, Nov 14, 2009 at 11:09 AM, Duane Wandless <[email protected]>
> wrote:
> >>
> >> I'm trying to use NSURLConnection, mainly to take advantage of Apple's
> >> built in proxy detection.  However I cannot get the delegate to work.
> >>
> >> Any help in getting NSURLConnection to work would be greatly
> appreciated.
> >>
> >> NSURLConnection.Class.cs defines:
> >> public virtual Id Delegate
> >>         {
> >>             get { return ObjectiveCRuntime.SendMessage<Id>(this,
> >> "delegate"); }
> >>             set { ObjectiveCRuntime.SendMessage(this, "setDelegate:",
> >> value); }
> >>         }
> >>
> >> However there is no "delegate" selector defined on NSURLConnection so
> >> SetDelegate fails with:
> >> 2009-11-14 10:50:12.468 SimplePrototype[1356:5e03] -[NSURLConnection
> >> delegate]: unrecognized selector sent to instance 0x6d3b20
> >>
> >> Also if I try:
> >>             NSURLConnection.NSURLConnectionEventDispatcher d =  new
> >> NSURLConnection.NSURLConnectionEventDispatcher();
> >>             d.ConnectionDidFailWithError += new
> >>
> NSURLConnection.ConnectionDidFailWithErrorEventHandler(d_ConnectionDidFailWithError);
> >>             d.ConnectionDidFinishLoading += new
> >>
> NSURLConnection.ConnectionDidFinishLoadingEventHandler(d_ConnectionDidFinishLoading);
> >>             d.ConnectionDidReceiveData += new
> >>
> NSURLConnection.ConnectionDidReceiveDataEventHandler(d_ConnectionDidReceiveData);
> >>             d.ConnectionDidReceiveResponse += new
> >>
> NSURLConnection.ConnectionDidReceiveResponseEventHandler(d_ConnectionDidReceiveResponse);
> >>             NSURLConnection conn = new NSURLConnection(req, d);
> >>
> >> none of the callbacks are invoked.  I also tried creating a class that
> >> defined:
> >>         [ObjectiveCMessage("connection:didReceiveResponse:")]
> >>         public void didReceiveResponse(NSURLConnection conn,
> NSURLResponse
> >> resp)
> >>
> >> but that failed to receive a response either.  I also tried creating the
> >> connection with start immediately false and then calling start, again
> >> without success.
> >>
> >> Thanks,
> >> Duane
> >>
> >
> >
>

Reply via email to