[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cocoa Compatible, is it actually possible?

From: David Chisnall
Subject: Re: Cocoa Compatible, is it actually possible?
Date: Sun, 26 Jul 2009 22:41:32 +0100

Hi Lucas,

On 26 Jul 2009, at 22:32, Lucas Samaruga wrote:

Hi all

From total ignorance.
Is it possible to make an application fully compatible between Cocoa
and GNUstep?

Yes, it's possible (at a source level, anyway. I believe the bundle layouts are such that it's also possible to create a .app bundle with an OS X binary as well as GNUstep/Linux/BSD/Whatever binaries, but I've never actually tried).

In general, if you stick to Foundation and AppKit, your app should Just Work™ with GNUstep. There are a few other frameworks, for example the Address Book and CoreData which have GNUstep versions too.

In practice, you will find that the probability of any given class or method being supported increases with the age of the API. Anything from OpenStep is pretty-much guaranteed to work with GNUstep. Most things from OS X 10.3 and earlier work. Quite a few things from 10.5 work.

Of course, patches for any missing methods are very welcome. Often implementing a missing method (or class) in GNUstep is less effort than modifying your application to avoid using it...

Is there any list of incompatibilities or api differences?

There used to be an automatically-generated list somewhere, but it wasn't very accurate. I'm not sure if it still exists. If you develop with GNUstep and then port to OS X, things are much more likely to work than the other way around, as long as you don't #import any of the GNUstep extension headers (and, even then, they are often available as categories on OS X).

To give you a rough idea of the completeness of GNUstep, I use the Apple API documentation when I am writing GNUstep code, rather than the GNUstep docs, and haven't come across a missing method that I actually wanted to use for quite a while.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]