È possibile programmare iPhone in C ++


124

Sono tutto per la diversità linguistica, ma l'obiettivo C è folle. Quindi sono curioso: è possibile codificare le app per iPhone con C ++ mentre si utilizza l'API Cocoa, ecc.?

Risposte:


57

Risposta breve, sì, una specie di. Puoi utilizzare Objective-C ++, che puoi leggere su Apple Developer Connection.

Se conosci già C ++, imparare Objective-C sarebbe piuttosto semplice, se decidessi di provarlo. Ulteriori informazioni su tale argomento sono disponibili anche presso l'ADC.


1
puoi consigliare un sito Web o un libro rivolto a programmatori C ++ esperti per imparare Objective-C? Sono riuscito a unire alcune app di test insieme, ma trovo la sintassi un po 'arretrata e sono sicuro di fare cose che portano a perdite di memoria ecc. Solo per mancanza di conoscenza di Objective-C
Lea Hayes,

3
@LeaHayes Un libro gratuito chiamato "Da C ++ a Objective-C". Suppone che tu conosca C ++ e poi ti dice come le cose vengono fatte diversamente in Objective-C. pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf (questa è una traduzione inglese del francese originale)
olafure

61

Sebbene inizialmente Objective-C sembri "pazzo", ti incoraggio a seguirlo. Una volta che hai un momento "a-ha", improvvisamente tutto inizia a dare un senso. Per me ci sono volute circa 2 settimane di concentrazione mirata di Objective-C per capire veramente i framework di Cocoa, il linguaggio e come tutto si adatta. Ma una volta "capito", è stato molto eccitante.

Sembra un cliché, ma è vero. Attaccalo.

Naturalmente, se stai introducendo librerie C ++ o codice C ++ esistente, puoi usare quei moduli con Objective-C / Objective-C ++.


42

Uso Objective-C per dare uno schiaffo all'interfaccia utente.
Ma il coraggio del codice è ancora scritto in C ++.

Questo è lo scopo principale di Objective-C dell'interfaccia utente e della gestione degli eventi.
E funziona benissimo a tale scopo.

Mi piace comunque C ++ come backend per il codice (ma questo è principalmente perché mi piace C ++) puoi usare facilmente Objective-C anche per il backend dell'applicazione.


9
@Spanky: come faccio esattamente cosa. È possibile scrivere C normale nel file * .m. È possibile scrivere C ++ normale in file * .mm (Objective-C ++). All'interno dei file Objective-C (++) è possibile utilizzare normali #include <XXX>proprio come i file C / C ++.
Martin York,

28

Prima di tutto, dire che Objective-C è "folle" è divertente - Ho il libro di Bjarne Stroustrup C ++ seduto al mio fianco che arriva a 1020 pagine. Il PDF di Apple su Objective-C è 141.

Se vuoi usare UIKit, sarà molto, molto difficile per te fare qualsiasi cosa in C ++. Qualsiasi app per iPhone seria che sia conforme all'interfaccia utente di Apple avrà bisogno che le sue parti dell'interfaccia utente siano scritte in Objective-C. Solo se stai scrivendo un gioco OpenGL puoi rimanere quasi interamente in C / C ++.


30
Da quando meno documentazione è stata una buona cosa? "Il linguaggio di programmazione C ++" è molto approfondito e documenta anche l'STL.
Timmmm,

2
@Timmmm: Sin da quando K&R ha sottolineato questo aspetto nelle prime pagine del loro libro. Objective-C è un linguaggio molto più piccolo di C ++, con molti degli stessi vantaggi (e alcuni più propri). Ovviamente tutti i compromessi. Ma una documentazione minima rende Obj-C abbastanza semplice per le persone C (o C ++) esperte con cui potersi aggiornare.
Ben Zotto,

62
Scusa ma ObjC è pazzo. L'insistenza su un modo completamente diverso di dichiarare le funzioni, l'uso delle parentesi. È diverso per nessun vantaggio. Avrebbero potuto redigere lo stesso linguaggio efficace senza la sintassi ridicola. Hanno scelto di non farlo. Quindi è pazzo.
Rabarbaro,

13
@Rhubarb - Anche se mi piace Objective-C, devo ammettere che la sua strana sintassi non serve a nulla.
Raffaello,

@Rhubarb, Yup, ricorda che Apple è la società che ha avuto quella follia, e Apple è diversa al solo scopo di essere diversa.
SeanRamey,

14

Avendo una certa esperienza di questo, puoi davvero usare il codice C ++ per il tuo codice "core", ma devi usare object-C per qualsiasi cosa specifica di iPhone.

Non cercare di forzare Objective-C ad agire come C ++. All'inizio ti sembrerà possibile, ma il codice risultante in realtà non funzionerà bene con Cocoa e sarai molto confuso su ciò che sta succedendo. Prenditi il ​​tempo per imparare correttamente, senza C ++ in giro, come costruire GUI e applicazioni per iPhone, quindi collegare nella tua base C ++.


3

Devi usare l'Obiettivo C per interfacciarti con l'API Cocoa, quindi non c'è scelta. Ovviamente, puoi usare tutto il C ++ che vuoi dietro le quinte (Objective C ++ lo rende facile).

È davvero un linguaggio folle, ma è anche ... divertente da usare una volta che ci sei abituato. :-)



2

Sto eseguendo il porting di un'app Android ad alta intensità di calcolo scritta in Java su iOS6. Sto facendo questo porting delle parti non UI da Java a C ++, scrivendo le parti (minime) dell'interfaccia utente in Obj-C e avvolgendo le prime in una (piccola) interfaccia C usando la tecnica standard C / C ++, in modo che vi si può accedere da Obj-C, che dopo tutto è un superset di C.

Finora è stato efficace e non ho riscontrato alcun problema. Sembra essere un approccio legittimo, dal momento che Xcode ti consente di creare classi C ++ e Obj-C e alcuni dei codici di esempio ufficiali fanno le cose in questo modo. Per fare questo non ho dovuto uscire da nessuna interfaccia supportata ufficialmente.

Non sembra che ci sia molto da guadagnare dalla scrittura del mio codice UI rimanente in C ++ anche se fosse possibile, in vista dell'aiuto che ti è stato dato dal costruttore di interfacce in Xcode, quindi la mia risposta sarebbe che puoi usare C ++ per quasi tutte le tue app o quanto ritieni appropriate / convenienti.


2

Sì, ma pensare di poter programmare ogni tipo di programma in una sola lingua è un'idea imperfetta a meno che tu non stia scrivendo programmi molto semplici. L'obiettivo C è per Cocoa come C # è per .NET, utilizzare lo strumento giusto per il lavoro giusto, cercare di far interagire C ++ con Cocoa scrivendo il codice ponte e provare a far comportare il codice C ++ secondo i requisiti Cocoa non è una buona idea né aspettarsi C ++ la prestazione dall'obiettivo C è. Dovresti provare a progettare il layout e l'architettura dell'app tenendo in considerazione le competenze esistenti e determinare quale parte dovrebbe essere scritta in quale lingua quindi costruire di conseguenza.


0

Attualmente sto scrivendo un framework Objective-C ++ chiamato Objective-X, che rende possibile la PROGRAMMAZIONE iPHONE PURE C ++. Puoi fare così:

#import "ObjectiveX.h"

void GUIApplicationMain() {    
    GUIAlert Alert;
    GUILabel Label;
    GUIScreen MainScreen;

    Alert.set_text(@"Just a lovely alert box!");
    Alert.set_title(@"Hello!");
    Alert.set_button(@"Okay");
    Alert.show();

    Label.set_text(@"Ciao!");
    Label.set_position(100, 200, 120, 40);

    MainScreen.init();
    MainScreen.addGUIControl(Label.init());    
}

e compilarlo usando le opzioni appropriate della riga di comando di GCC. Ho già compilato questa app di helloworld e w0rkX0rz come un fascino. ;-) Sarà presto disponibile su GoogleCode. Cerca Objective-X o visita http://infotronix.orgfree.com/objectivex circa. una settimana dopo!

URL aggiornato (ma apparentemente inattivo): http://code.google.com/p/objectivex/


4
Perché non aspettare con la pubblicazione fino a quando non sarà effettivamente disponibile?
Georg Fritzsche,

8
Entrambi i link sono ora 404
Zhao Xiang

1
Secondo SourceForge: "A partire dal 24-01-2014, questo progetto non è più in fase di sviluppo attivo". sourceforge.net/projects/objectivex
JAL

0

Potrebbe essere un po 'offtopico, ma comunque. Puoi programmare c ++ direttamente sui dispositivi iOS. Scopri l'app ios CppCode - http://cppcode.info . Credo che aiuti a imparare c e c ++ e object-c in seguito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.