Ben dil çeşitliliğinden yanayım ama Objective C delilik. Bu yüzden merak ediyorum: Cocoa API vb. Kullanırken iPhone uygulamalarını C ++ ile kodlamak mümkün mü?
Ben dil çeşitliliğinden yanayım ama Objective C delilik. Bu yüzden merak ediyorum: Cocoa API vb. Kullanırken iPhone uygulamalarını C ++ ile kodlamak mümkün mü?
Yanıtlar:
Kısa cevap, evet, biraz. Apple Developer Connection'da hakkında okuyabileceğiniz Objective-C ++ 'ı kullanabilirsiniz .
C ++ 'ı zaten biliyorsanız, bunu denemeye karar verdiyseniz, Objective-C öğrenmek oldukça basit olacaktır. Bu konu hakkında daha fazla bilgi ADC'de de mevcuttur.
Objective-C başlangıçta gerçekten "deli" gibi görünse de, buna bağlı kalmanızı tavsiye ederim. Bir "a-ha" anı yaşadığınızda, aniden her şey anlam kazanmaya başlar. Benim için Cocoa çerçevelerini, dili ve hepsinin nasıl birbirine uyduğunu gerçekten anlamak için yaklaşık 2 hafta odaklı Objective-C konsantrasyonu gerekti. Ama gerçekten "anladığımda" çok çok heyecan vericiydi.
Klişe geliyor ama doğru. Çıkarın.
Elbette, C ++ kitaplıklarını veya mevcut C ++ kodunu getiriyorsanız, bu modülleri Objective-C / Objective-C ++ ile kullanabilirsiniz.
UI'yi bir araya getirmek için Objective-C kullanıyorum.
Ancak kodun zor kısmı hala C ++ ile yazılmıştır.
Bu, Objective-C'nin UI arayüzünün ve olayların işlenmesinin temel amacıdır.
Ve bu amaç için harika çalışıyor.
Yine de kod için arka uç olarak C ++ 'ı seviyorum (ancak bu esas olarak C ++' yı sevdiğim için), uygulamanın arka ucu için de Objective-C'yi oldukça kolay bir şekilde kullanabilirsiniz.
#include <XXX>
C / C ++ dosyaları gibi normal kullanabilirsiniz .
Öncelikle, Objective-C'nin "çılgın" olduğunu söylemek komiktir - 1020 sayfada saatlerini gösteren Bjarne Stroustrup C ++ kitabı yanımda duruyor. Apple'ın Objective-C hakkındaki PDF dosyası 141'dir.
UIKit'i kullanmak istiyorsanız, C ++ ile herhangi bir şey yapmanız çok ama çok zor olacaktır. Apple'ın kullanıcı arayüzüne uyan herhangi bir ciddi iPhone uygulaması, UI bölümlerinin Objective-C'de yazılmasına ihtiyaç duyacaktır. Sadece bir OpenGL oyunu yazıyorsanız, neredeyse tamamen C / C ++ 'ya bağlı kalabilirsiniz.
Bu konuda biraz deneyime sahip olarak, "çekirdek" kodunuz için gerçekten C ++ kodunu kullanabilirsiniz, ancak iPhone'a özgü herhangi bir şey için amaç-C'yi kullanmanız gerekir.
Objective-C'yi C ++ gibi davranmaya zorlamayın. İlk başta size bu mümkün gibi görünecek, ancak ortaya çıkan kod Cocoa ile gerçekten iyi çalışmayacak ve neler olduğu konusunda kafanız çok karışacak. Herhangi bir C ++ olmadan düzgün bir şekilde öğrenmek için zaman ayırın, GUI'leri ve iPhone uygulamalarını nasıl oluşturacağınızı ve ardından C ++ tabanınıza bağlanın.
Cocoa API ile arayüz oluşturmak için Objective C kullanmanız gerekir, bu nedenle başka seçenek yoktur. Elbette perde arkasında istediğiniz kadar C ++ kullanabilirsiniz (Objective C ++ bunu kolaylaştırır).
Gerçekten çılgınca bir dil, ama aynı zamanda ... biraz alıştıktan sonra kullanmak da eğlenceli. :-)
C ++ konusunda emin değilim, ancak MonoTouch adlı bir ürünü kullanarak iPhone uygulamalarını C # ile kesinlikle kodlayabilirsiniz .
MonoTouch Vs Obj-C hakkında ayrıntılı tartışma için bu gönderiye bakabilirsiniz: MonoTouch ve Objective-C arasında nasıl karar verilir?
Java ile yazılmış yoğun hesaplama gerektiren bir Android uygulamasını iOS6'ya taşıma sürecindeyim. Bunu, UI olmayan parçaları Java'dan C ++ 'ya taşıyarak, (minimal) UI parçalarını Obj-C'ye yazarak ve birincisini standart C / C ++ tekniğini kullanarak bir (küçük) C arayüzüne sararak yapıyorum, böylece C'nin bir üst kümesi olan Obj-C'den erişilebilir.
Bu şimdiye kadar etkili oldu ve herhangi bir sorunla karşılaşmadım. Meşru bir yaklaşım gibi görünüyor, çünkü Xcode, C ++ sınıflarının yanı sıra Obj-C sınıfları oluşturmanıza izin veriyor ve resmi örnek kodlardan bazıları işleri bu şekilde yapıyor. Bunu yapmak için resmi olarak desteklenen arayüzlerin dışına çıkmam gerekmedi.
Xcode'daki arayüz oluşturucu tarafından size verilen yardım göz önüne alındığında, mümkün olsa bile, kalan UI kodumu C ++ 'da yazmanın pek bir faydası olmayacak gibi görünüyor, bu yüzden cevabım, C ++' ı kullanabileceğiniz şeklinde olacaktır. neredeyse tüm uygulamanız veya sizin uygun / uygun bulduğunuz kadarıyla.
Evet ama her tür programı tek bir dilde programlayabileceğinizi düşünmek, çok basit programlar yazmıyorsanız kusurlu bir fikirdir. C # .NET için olduğundan Objective C Cocoa içindir, Doğru iş için doğru aracı kullanın, Köprüleme kodu yazarak C ++ ile Cocoa etkileşimini sağlamaya çalışmak ve C ++ kodunun Cocoa gereksinimlerine göre davranmasını sağlamaya çalışmak iyi bir fikir değildir ne de C ++ beklemek Amaç C'nin performansı. Mevcut becerileri göz önünde bulundurarak uygulamanın tasarımını ve mimarisini düzenlemeye çalışmalı ve hangi bölümün hangi dilde yazılacağını belirlemeli ve buna göre inşa etmelisiniz.
Şu anda Objective-X adlı bir Objective-C ++ çerçevesi yazıyorum, bu da PURE C ++ iPHONE PROGRAMMING'i mümkün kılıyor. Bunu beğenebilirsin:
#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());
}
ve GCC'nin uygun komut satırı seçeneklerini kullanarak derleyin. Bu helloworld uygulamasını zaten derledim ve bir cazibe gibi w0rkX0rz. ;-) Yakında GoogleCode'da satışa sunulacak. Objective-X'i arayın veya yaklaşık olarak http://infotronix.orgfree.com/objectivex adresini ziyaret edin . bir hafta sonra!
Güncellenen (ancak görünüşe göre etkin olmayan) URL: http://code.google.com/p/objectivex/
Biraz konu dışı olabilir ama neyse. C ++ 'ı doğrudan iOS cihazlarda programlayabilirsiniz. CppCode ios uygulamasına bakın - http://cppcode.info . Daha sonra c ve c ++ ve amaç-c'yi öğrenmenin yardımcı olduğuna inanıyorum.