On 7 okt 2010, at 22:13, Quincey Morris wrote:

> On Oct 7, 2010, at 11:58, Hans van der Meer wrote:
> 
>> In my application I instantiate a MainController (the delegate having 
>> "awakeFromNib) from where all actions are dispatched. In order to send 
>> messages to the displaywindow residing in MainController, there is the 
>> problem how to find this MainController from other callers (possibly on 
>> other threads). Now it is coded as follows:
>> 
>> In MainController.c: 
>> static MainController *controller = nil;
>> controller = self; /* in its init method */
>> + (void) message:(NSString *)msg;
>>   { dispatch_async(dispatch_get_main_queue(), ^{[controller message:msg];});}
>> - (void) message:(NSString *)msg;
>> 
>> I am not very happy with the static variable but do not see another way to 
>> accomplish this. I fear my solution is not as much in the spirit of Cocoa 
>> programming as it should be. 
>> Is there a better way?
> 
> If it's your application delegate, other objects can find it as [NSApp 
> delegate] or [[NSApplication sharedAppplication] delegate].

That is exactly what I needed. My code now is:
- (void) message:(NSString *)message;
{
  dispatch_async(dispatch_get_main_queue(), 
    ^{[[NSApp delegate] message:message];});
}
And this will get rid of the static variable and the class function in the 
MainController. It is of course a matter of which style one prefers. For me 
this coding most clearly expresses what goes on and shows it at exactly the 
point where the action is invoked.

Thanks!

Hans van der Meer

_______________________________________________

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 arch...@mail-archive.com

Reply via email to