FROM : Aurélien Hugelé
DATE : Mon Apr 25 18:45:33 2005
On 24 avr. 05, at 23:58, Philip Mötteli wrote:
> Hi
>
>
> Has Apple changed something with their implementation of
> Distributed Objects? Do they always call -
> methodDescriptionForSelector: before calling the real method?
> I have an object, that implements multiple inheritance. I have done
> this, by implementing the following methods:
>
> - (void)forwardInvocation:(NSInvocation *)anInvocation;
> - (BOOL)respondsToSelector:(SEL)aSelector;
> - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;
>
> So far everything worked well. But since recently, I see the
> NSConnection make the following call, before calling the real method:
>
> -[anObject methodSignatureForSelector:@selector
> (methodDescriptionForSelector:)]
>
>
> Of course this returns something, because -
> methodDescriptionForSelector: is implemented by Apple in NSObject.
> But then in this method they seem to try to extract some
> information about the real method, that was called. Unfortunately,
> the real method is not part of the original object, but part of the
> multiple inheritance, so another object. So I get a 'method not
> implemented' error.
> So I thought, we apparently have to implement another method in
> order to achieve multiple inheritance:
>
> - (struct objc_method_description *)methodDescriptionForSelector:
> (SEL)aSelector
> {
> struct objc_method_description *aDescription = [super
> methodDescriptionForSelector:aSelector];
> if(aDescription)
> return aDescription;
>
> return [[self otherObject]
> methodDescriptionForSelector:aSelector];
> }
>
>
> This then gives the following DO error:
>
>
> _preInitWithCoder:signature:valid:wireSignature:target:selector:argCou
> nt: incompatible method params: got NSMethodSignature: types=^
> {objc_method_description=:*}@:: nargs=3 sizeOfParams=160
> returnValueLength=4; want NSMethodSignature: types=^
> {objc_method_description=}@:: nargs=3 sizeOfParams=160
> returnValueLength=4;
>
are you using tiger ?
almost all of my DO code gives me the same error on 10.4, it was
working like a charm under 10.2 and 10.3
i think it is a bug in Cocoa DO since 10.4, but i'm not sure... i
must recognized that i'm lost here...
have you tried a trivial OD test ?
thanks
>
> How do I implement multiple inheritance with DO?
>
>
> Thanks
> Phil
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Cocoa-dev mailing list (<email_removed>)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/hugele.aurelien%
> 40gumitech.com
>
> This email sent to hugele.<email_removed>
>
>
DATE : Mon Apr 25 18:45:33 2005
On 24 avr. 05, at 23:58, Philip Mötteli wrote:
> Hi
>
>
> Has Apple changed something with their implementation of
> Distributed Objects? Do they always call -
> methodDescriptionForSelector: before calling the real method?
> I have an object, that implements multiple inheritance. I have done
> this, by implementing the following methods:
>
> - (void)forwardInvocation:(NSInvocation *)anInvocation;
> - (BOOL)respondsToSelector:(SEL)aSelector;
> - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;
>
> So far everything worked well. But since recently, I see the
> NSConnection make the following call, before calling the real method:
>
> -[anObject methodSignatureForSelector:@selector
> (methodDescriptionForSelector:)]
>
>
> Of course this returns something, because -
> methodDescriptionForSelector: is implemented by Apple in NSObject.
> But then in this method they seem to try to extract some
> information about the real method, that was called. Unfortunately,
> the real method is not part of the original object, but part of the
> multiple inheritance, so another object. So I get a 'method not
> implemented' error.
> So I thought, we apparently have to implement another method in
> order to achieve multiple inheritance:
>
> - (struct objc_method_description *)methodDescriptionForSelector:
> (SEL)aSelector
> {
> struct objc_method_description *aDescription = [super
> methodDescriptionForSelector:aSelector];
> if(aDescription)
> return aDescription;
>
> return [[self otherObject]
> methodDescriptionForSelector:aSelector];
> }
>
>
> This then gives the following DO error:
>
>
> _preInitWithCoder:signature:valid:wireSignature:target:selector:argCou
> nt: incompatible method params: got NSMethodSignature: types=^
> {objc_method_description=:*}@:: nargs=3 sizeOfParams=160
> returnValueLength=4; want NSMethodSignature: types=^
> {objc_method_description=}@:: nargs=3 sizeOfParams=160
> returnValueLength=4;
>
are you using tiger ?
almost all of my DO code gives me the same error on 10.4, it was
working like a charm under 10.2 and 10.3
i think it is a bug in Cocoa DO since 10.4, but i'm not sure... i
must recognized that i'm lost here...
have you tried a trivial OD test ?
thanks
>
> How do I implement multiple inheritance with DO?
>
>
> Thanks
> Phil
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Cocoa-dev mailing list (<email_removed>)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/hugele.aurelien%
> 40gumitech.com
>
> This email sent to hugele.<email_removed>
>
>
| Related mails | Author | Date |
|---|---|---|
| Philip Mötteli | Apr 24, 23:58 | |
| Aurélien Hugelé | Apr 25, 18:45 | |
| Philip Mötteli | Apr 25, 19:37 |






Cocoa mail archive

