[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ProjectCenter segfault
From: |
Stefan Urbanek |
Subject: |
Re: ProjectCenter segfault |
Date: |
Fri, 11 Jul 2003 07:57:09 +0200 |
On 2003-07-11 01:50:49 +0200 Alexander Malmberg <alexander@malmberg.org> wrote:
Benhur Stein wrote:
I'm getting those too. I think they are related to the last changes in base
to better support DO. It seems that message forwarding is not always working
well.
[snip]
I've noticed what might be a related problem in some apps. It seems that
combining forwarding with -performSelector: no longer works unless the
performed method has a return type (id). There seem to be issues with
using untyped selectors (although there is an id return from
-performSelector:, the forwarding code can't know this). Haven't looked
closely at it yet, though.
If you want to forward, you hav eto know types. You should get types from
object which are you forwarding to, however -base used to use random types from
objc runtime.
It's also pickier now than before. Forwarding won't work at all unless
you implement -methodSignatureForSelector:.
Sure you have to. Even in apple docs you have higlighted text in a box saying:
Note: To respond to methods that your object does not itself recognize, you
must override methodSignatureForSelector: in addition to forwardInvocation:.
The mechanism for forwarding messages uses information obtained from
methodSignatureForSelector: to create the NSInvocation object to be forwarded.
Your overriding method must provide an appropriate method signature for the
given selector, either by preformulating one or by asking another object for
one.
And it is logical. I think that the latest change, and usage of selector from
object to which invocation is being sent, revealed other bugs in GS (think of
it as Good).
Stefan