2010-02-19 10 views
6

Sembra che Cocoa sembri la piattaforma principale per Objective-C. GCC (che usa Xcode) supporta Objective-C quindi deve essere disponibile su una vasta gamma di piattaforme.L'obiettivo-C è utilizzato senza cacao?

Esistono importanti progetti multipiattaforma che utilizzano Objective-C ma non Cocoa (o il suo cugino open source GNUStep)? E 'davvero usato al di fuori dell'ecosistema Apple?

+0

Non posso dirlo con certezza dal testo, ma solo per chiarezza, ci si rende conto che GNUStep è multipiattaforma, giusto? "GNUstep attualmente supporta Unix (GNU/Linux e GNU/HURD, Solaris, NetBSD, OpenBSD, FreeBSD, Darwin) e Windows" citato da http://www.gnustep.org/ –

+0

Sì, l'ho capito. Chiarirò Sto cercando di chiedermi se Obj-C è usato come linguaggio generico (nello stesso tipo di contesti come ad esempio C o C++) piuttosto che interagire solo con librerie/framework come Cocoa o GNUStep. – Joe

risposta

11

L'obiettivo-C è stato anche popolare nelle comunità di servizi scientifici e finanziari. Ci sono ancora molte applicazioni basate su Objective-C implementate nel settore bancario, principalmente sul fronte dell'analisi commerciale. Un amico lavora su una linea di milioni di codice di analisi e motore di trading basati su Objective-C per cui ha scritto la propria gerarchia di classi da zero.

A un certo punto, uno dei gestori di finestre Linux più popolari è stato scritto in Objective-C. È stato qualche anno fa e potrebbe non essere più così.

Il LLVM compiler compila anche Objective-C, compreso il supporto completo per i blocchi. È anche abbastanza portatile.

C'è anche lo Portable Object Compiler di David Stes. Compila Objective-C to C e utilizza una gerarchia di classi basata abbastanza direttamente sulla gerarchia di classi ICPak originale da StepStone.

0

Sì, ci sono sicuro. Quello che mi viene in mente è Cocotron. Uno sforzo per portare AppKit a Windows.

http://www.cocotron.org/

A parte questo, Objective-C può essere utilizzato su qualsiasi piattaforma che gcc verrà eseguito su. Non avrai la ricchezza di framework disponibili in Cocoa su OS X o iPhone, anche se come hai detto, GNUStep fa un buon lavoro.

+0

Grazie, sembra interessante! Tuttavia, è ancora centrato sull'API di Apple ... – Joe

+0

GNUStep (che include il gestore di finestre wmaker e il relativo generatore di app di grafica) è decisamente diverso dall'API di Apple - derivano dallo stesso obiettivo NeXTStep su cui si basa Cocoa. –

+0

Dipende se credi che Steve abbia portato con sé lo spirito di Apple nel 1985 ... :) Intendevo NeXT e i suoi successori (inclusa Apple). – Joe

4

Sembra che tu stia chiedendo se Objective-C viene mai usato senza Cocoa, GNUstep o Cocotron o qualsiasi API come.

La risposta è fondamentalmente no. Senza una API come Cocoa (o GNUstep, ecc.), Objective-C non è molto utile. Ad esempio, senza NSObject, retain e release non esisterebbero nemmeno. Un sacco di funzionalità molto importanti sono incorporate in queste API, quindi è in qualche modo inutile usare Obj-C senza uno di essi.

+0

Ok. Questa è la risposta che stavo cercando! Grazie. Ho dimenticato che l'importantissimo 'NSObject' è definito nell'API e non nella lingua (avresti pensato che il' NS' avrebbe dato via ...) Per la ragione che stavo chiedendo è perché stavo pensando di mettere in ordine un progetto C lineare con alcuni Obj-C e questo mi ha portato alla domanda. – Joe

+2

Il runtime Objective-C (il precedente su Mac OS X e il runtime GNU) definisce un oggetto chiamato 'Object' che ha molti metodi in comune con' NSObject', sebbene alcuni abbiano nomi diversi. Non contiene release/retain ma è sufficiente avviare il tuo framework indipendente da Cocoa. – dreamlax