Tutorial Stefan linked to seems nice. But, consider that perhaps GORM will make more sense if you start by doing things "by hand", in code.
For that, I like Nicola Pero's tutorials:
While I don't know of easy and clear tutorials on how to communicate over network, you may be able to find some documentation that applies to Cocoa, too. (You'll, of course, have to be careful to find examples that use a subset of Foundation and AppKit that's actually supported by GNUstep. Easiest way is to try and see what works.)
Or you can just use BSD sockets directly.
For running things in background, this is useful:
- (void) thisWillBeAnotherThread: (id)anObject
{
sleep(2); /* long operation */
[[self someButtonStoredInAProperty] performSelectorOnMainThread: @selector(setTitle:) withObject: @"Changed!"]; /* UI should be changed only on the main thread */
/* in writing the code above, I assumed the value in
someButtonStoredInAProperty property will not change
while this thread is running. for exercise: why is that
important and how would you have to work around
this assumption? */
}
- (void) buttonClicked: (id)sender
{
[self performSelectorInBackground: @selector(thisWillBeAnotherThread:) withObject: nil];
}