SORU
8 ŞUBAT 2009, Pazar


Kakao Yerine Objective-C ile C kullanmak?

Apple Karbon 64-bit uyumlu yapıyor çünkü C ve Kakao çerçeveler kullanan uygulamalar yazmak istiyorum. C Mac OS, Linux ve Windows üzerinde ama uygulanması oldukça vanilya gibi görünüyor X Kod ek Apple belirli parçaları gerekli gibi görünüyor (N-C sarıcı bir gibi). Bu da yanlış olabilir ancak Apple geliştiriciler Objective-C yerine , yazmak için zorluyor gibi görünüyor.

Çapraz platform tutmak kolay olurdu Mac kodu yazmak için bir yol bulmaya çalışıyorum. Linux/Windows için C kodu yazmak ve Objective-C büyük bölümlerini yeniden sonra olması çok verimsiz olurdu.

Bir şekilde geleceği için böyle büyük mükafat desteklenen ve desteklenecek olan C kodu yazmak var mı? Ayrıca, eğer bu mümkün değilse, nasıl C ve Objective-C karışımı Güncellemelerinden ki? Teşekkürler.

CEVAP
9 ŞUBAT 2009, PAZARTESİ


Olamaz Kakao bir uygulama tamamen C yazın . Kakao yoğun olarak geç bağlama yetenekleri Objective-C Anahtar-Değer gibi temel teknolojiler birçok bağlar, temsilciler (Kakao tarzı), ve hedef-eylem desen dayanır. Geç bağlama şartları olunçokzor Kakao uygulamak için bir derleme bağlı, yazılan API dil gibi C ⁱ. Elbette, bu yalnızca Kakao kullanamaz OS X API üzerinde çalışan saf C bir uygulama yazabilirsiniz.

Bu yüzden, eğer diğer platformlarda C uygulamalar arasında kod paylaşımı yapmak istiyorsanız iki seçeneğiniz var Kakao tabanlı bir uygulama. İlk C model katmanı ve Kakao GUI yazmaktır. Bu ortak bir yaklaşım çok büyük bazı uygulamalar, Mathematica dahil olmak üzere kullanılır. C kodunu ("funky" yazmak veya derlemek için apple uzantıları C OS X). gerekmez değişmeden bırakılabilir Denetleyici katmanı muhtemelen Objective-C kullanımı (belki de "funky" bakın Apple uzantısı). yapacak Objective-C için birebir C , Objective-C bir üst C. Objective-C , yapabilirsiniz objc tarzı bir mesaj iletir ([some-objc-object callMethod];) içinde bir C fonksiyonu. Tersine, ObjC kod içinde C fonksiyonları gibi olabilir:

@interface MyClass {
    MyCPPClass *cppInstance;
}
@end

@implementation MyClass
- (id)init {
    if(self = [super init]) {
        cppInstance = new MyCPPClass();
    }
    return self;
}
- (void) dealloc {
    if(cppInstance != NULL) delete cppInstance;
    [super dealloc];
}
- (void)callCpp {
    cppInstance->SomeMethod();
}
@end

Objective-C Objective-C dili guide hakkında daha fazla bilgi bulabilirsiniz. Tabaka daha sonra saf olabilir Objective-C . görünüm

İkinci seçenek, çapraz platform C bir araç kullanmaktır. Qt araç tasarıyı uygun olabilir. Çapraz platform araci genellikle tüm L&F ayrıntılarını tam olarak doğru değil, çünkü Mac kullanıcıları tarafından hor görülen ve Mac kullanıcıları Mac uygulamaları UI Lehçe bekliyoruz. Qt şaşırtıcı derecede iyi bir iş yok, ancak, seyirci ve uygulama kullanımına bağlı olarak, yeterli olabilir. Buna ek olarak, Qt API yaklaşık değiştirmeleri olmasına rağmen OS X özgü teknolojileri Temel Animasyon ve bazı QuickTime işlevsellik gibi, bazı gevşek. Senin de işaret ettiğin gibi, Karbon 64-bit taşıdık olmayacaktır. Qt Karbon API uygulanan bu yana, Trolltech/Nokia Kakao API Qt 64-bit uyumlu hale getirmek için bağlantı noktasına sahip. Bildiğim kadarıyla bir sonraki relase Qt (şu anda release candiate) tamamlar bu geçiş ve 64-bit uyumlu OS X isteyebilirsiniz bak kaynak Qt 4.5 eğer ilgileniyorsanız entegre edilmesi C ve Cocoa API.


ⁱ bir süre İçin Apple Cocoa API Java için kullanılabilir, ama köprü kapsamlı bir el ayar gerekli ve Anahtar-Değer gibi daha gelişmiş teknolojiler idare edemedi Bağlamaları, yukarıda açıklanan. Şu anda dinamik olarak yazılan, zamanı bağlı diller Python, Ruby, vb. yazı için tek gerçek seçenek Cocoa Objective-C (tabii ki bu köprüler başlık altında Objective-C kullanmak rağmen) olmadan uygulama.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • mliskIT

    mliskIT

    29 Mart 2012
  • NLthomas21

    NLthomas21

    20 Mayıs 2008