FROM : Boaz Stuller
DATE : Sun Mar 30 22:48:45 2008
You have to pass a pointer to the object pointer not the object pointer
itself, i.e &fh not fh, when adding arguments to an invocation. So, the
correct call is:
[invocation setArgument:&fh atIndex:2];
Because objective-c objects' memory layout begin with a pointer to the
object's class, what actually occurred is that you set the argument to the
object's class rather than the object itself. That's why the error message
looks mostly correct, with only a subtle '+' instead of the '-' in front to
indicate it was interpreted as a class method.
Best wishes,
Bo
On Sun, Mar 30, 2008 at 3:30 PM, Jeff LaMarche <<email_removed>>
wrote:
> I'm having an unusual problem with an NSFileHandle. I'm creating an
> NSFileHandle and initializing it with a file descriptor that's
> actually a network socket. I'm able to send and receive data using it
> and it works fine. Then, I pass the NSFileHandle instance as the first
> argument of an NSInvocation call
>
> [invocation setArgument:fh atIndex:2];
>
> When I invoke the invocation, it calls my method with the file handle
> as the first argument, exactly as it's supposed to, BUT, the file
> handle doesn't work. I get the following message in the console when
> my code tries to actually use it:
>
> *** +[NSConcreteFileHandle writeData:]: unrecognized selector sent to
> class 0xa014ba80
>
> The weird thing is, if I call:
>
> [invocation target] performSelector:[invocation selector]
> withObject:fh];
>
> it works just fine.
>
> Does anyone have any idea what might be going on here? I've tried
> creating a new NSFileHandle and initializing it with the descriptor
> taken from the first argument, and I get the same result doing that.
> I'm able to work around the problem, but I'd still like to know if I'm
> doing something wrong.
>
> TIA for any help anyone can offer.
> Jeff
> _______________________________________________
>
>
DATE : Sun Mar 30 22:48:45 2008
You have to pass a pointer to the object pointer not the object pointer
itself, i.e &fh not fh, when adding arguments to an invocation. So, the
correct call is:
[invocation setArgument:&fh atIndex:2];
Because objective-c objects' memory layout begin with a pointer to the
object's class, what actually occurred is that you set the argument to the
object's class rather than the object itself. That's why the error message
looks mostly correct, with only a subtle '+' instead of the '-' in front to
indicate it was interpreted as a class method.
Best wishes,
Bo
On Sun, Mar 30, 2008 at 3:30 PM, Jeff LaMarche <<email_removed>>
wrote:
> I'm having an unusual problem with an NSFileHandle. I'm creating an
> NSFileHandle and initializing it with a file descriptor that's
> actually a network socket. I'm able to send and receive data using it
> and it works fine. Then, I pass the NSFileHandle instance as the first
> argument of an NSInvocation call
>
> [invocation setArgument:fh atIndex:2];
>
> When I invoke the invocation, it calls my method with the file handle
> as the first argument, exactly as it's supposed to, BUT, the file
> handle doesn't work. I get the following message in the console when
> my code tries to actually use it:
>
> *** +[NSConcreteFileHandle writeData:]: unrecognized selector sent to
> class 0xa014ba80
>
> The weird thing is, if I call:
>
> [invocation target] performSelector:[invocation selector]
> withObject:fh];
>
> it works just fine.
>
> Does anyone have any idea what might be going on here? I've tried
> creating a new NSFileHandle and initializing it with the descriptor
> taken from the first argument, and I get the same result doing that.
> I'm able to work around the problem, but I'd still like to know if I'm
> doing something wrong.
>
> TIA for any help anyone can offer.
> Jeff
> _______________________________________________
>
>
| Related mails | Author | Date |
|---|---|---|
| Jeff LaMarche | Mar 30, 21:30 | |
| Jeff LaMarche | Mar 30, 21:33 | |
| Boaz Stuller | Mar 30, 22:48 |






Cocoa mail archive

