Video: GTA San Andreas Beta Version and Removed Content - Hot Topic #11 2024
Karl G. Kowalski
Macintosh uygulama geliştirme yaratıcılık, Objective-C programlama becerileri, bazı sabır ve uygulamak için kalıcılık güzel porsiyon daha gerektirir ederek, rafine, ve Macintosh uygulamanızı kullanıcılarınıza iyi bir çalışma düzeni içerisinde sunmak. Bu destinasyona giderken, programlama ve problem çözme becerilerini test edecek bazı zorluklarla karşılaşacaksınız. (Diğer şeylerin yanı sıra) uygulama geri çağrılarını uygulamak için temsilci kullanarak uğraşmanız gerekir; Apple'ın Non-Objective-C çerçevelerini kullanarak; ve uygulamalarınıza C ++ kodu ekleme.
Macintosh Uygulamalar Uygulama Callbacks
Macintosh uygulama geliştirme, Mac OS X belirli işlemler için uygulamanız içindeki kod yürütmesine izin geri aramaları kullanır.
: Macintosh Pencere- standart veya belgeyi tabanlı uygulama oluşturuyorsanız, OS X yürütmek edeceği ilk kod uygulaması tasarımına bağlı, uygulamanız için oluşturmak zorunda aşağıdaki geri arama yöntemlerinden biri olan-
Window tabanlı uygulamalar: (void) applicationDidFinishLaunching: (NSNotification *) aNotification
-
Belge tabanlı uygulamalar: (void) windowControllerDidLoadNib: (NSWindowController *) windowController
A geri arama basit bir olduğunu Yöntemi, OS'nizin sonunda uygulamanızdan bilgi tedarik etmeye veya bunları geri almaya çalışırken yürüttüğü yöntemdir. Uygulama kodunuz, uygulamanızın sağlaması gereken bu sınıfa ait bir nesne üzerinde çağrılmak üzere, uygulamanızın sınıflarınızdan birinin adını verme fırsatına sahip olacağı bir Kakao sınıfı için bir yöntem icra edecektir.
A temsilci bir kakao sınıfı, kakao sınıfı, bazı durumlarda yürütülür kodu uygulamaya izin sınıfın işlevselliğini genişletmek için kullanılan bir yardımcı nesnesidir. Bir Kakao sınıfı, temsilci nesnesini belirli bir yöntemin uygulanmasını sağlayıp sağlamadığını kontrol eder (eğer biri atandıysa). Temsilci bu yöntemi kullanıyorsa, Cocoa sınıfı bu yöntemi uygular; temsilci bu yöntemi uygulamazsa, Cocoa sınıfı kendi varsayılan yöntemini kullanır veya bir hata günlüğe kaydeder. Çoğu temsilci, uygulayabilecekleri yöntemleri belirleyen belirli bir protokolünü içermelidir; kodunuzun temsilcileri, temsilci tarafından beklenen belirli bir protokoldeki uygulama yöntemlerini kullanmalıdır.
Kodunuzu yürütmek için temsilci kullanabilen bazı Kakao nesneleri şunlardır:
-
NSTableView.NSTableView, NSTableViewDelegate protokolüne uyan bir temsilci kabul eder. Buna, uygulamanızın temsilci nesnesinin, uygulamanızın NSTableView'un ne yaptığını bilmesini sağlamak için uygulayabileceği 20-30 yöntem vardır. Uygulamada, bir kullanıcı tabloda bir seçim yaparken veya bir sütun yeniden boyutlandırıldığında gibi bir işlemi öğrenmek ve bunlara tepki göstermek gerektiğinde çağrılabilecek yöntemler vardır.
-
NSApplication. Bir NSApplication örneğinin (uygulamanızın) alacağı bazı yöntemleri işlemek için bir NSApplicationDelegate atayabilirsiniz. Bu yöntemler, uygulamanızın hazırlanabilmesi için uygulamanızın başka bir yöntem yürütmesinden hemen önce veya hemen sonrasında çağrılabilmektedir.
-
NSWindow. Uygulamanızın pencerelerinden birine atanan bir NSWindowDelegate, uygulamanıza bir kullanıcıya yeniden boyutlandırma, taşıma veya diğer pencere olaylarına yanıt vermek için bir şans verecektir.
-
NSMenu. Bir kullanıcı uygulamanızdaki menülerle etkileşim kurduğunda gerçekleşen olayları desteklemek için bir NSMenü temsilci uygulayın.
Macintosh Uygulamaları'nda Non-Objective-C Çerçeveleri
Apple, uygulamanızın OS X'de binlerce işlemi gerçekleştirmek için arayabileceği birçok Macintosh uygulama geliştirme çerçevesi (kod kütüphanesi) sunmaktadır. Bu çerçevelerin birçoğu PDF Kit, uygulamanızın uygulamalarınızdaki nesneleri oluşturup kullanabileceği Objective-C sınıflarından oluşur. Bununla birlikte, bu çerçevelerin bazıları, uygulamanızın uygulayabileceği işlevlerin kütüphaneleridir.
Örneğin, CFNetwork çerçevesi, uygulamanızın ince ayarlı ağ bağlantılarını gerçekleştirmek için kullanabileceği bir dizi işlevdir. NSURL sınıfı, bir URL kullanarak veri almak için mükemmel temel ağ işlemleri dizisi sağlar. Uygulamanız başlattığı ağ iletişimlerinde daha fazla denetim gerektiriyorsa, CFNetwork çerçevesini ve işlevlerini kullanmanız gerekir. Belirli bir URL'ye iletilmek üzere bir HTTP isteği hazırlamak için aşağıdaki kodu kullanabilirsiniz:
CFStringRef httpBody = CFSTR ("); CFStringRef headerFieldName = CFSTR (" Cookie "); // HTTP isteğine belirli bir tanımlama bilgisi ekleyin CFStringRef headerFieldValue = CFSTRRef urlRef = CFURLCreateWithStrign (kCFAllocatorDefault, url, NULL); CFStringRef requestMethod = CFSTR ("GET"); CFSTR ("loginID = kullanıcı_adı; parola = my_password;"); CFHTTPMessageRef isteği = CFHTTPMessageCreateRequest (kCFAllocatorDefault, requestMethod, url, kCFHTTPVersion1_1); CFHTTPMessageSetBody (istek, httpBody); CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage (istek);;
kodunuzu sahip olduğunda // çerez CFHTTPMessageSetHeaderFieldValue (istek, headerFieldName, headerFieldValue) ekleyin seri hale getirilmiş istek, uygulamanız daha sonra isteği hedefine göndermek için bir yazım akışı açabilir.
Tüm C tabanlı Apple çerçeveleri, Bu tip alt düzey programlamayı gerçekleştirmek için işlevler dizisi. Kodunuz daha karmaşık hale gelecek, ancak Apple tüm çerçeveleri için Objective-C sınıfları sağlamıyor.Gerçekten bu çerçevelerden birinde bulunan işlevsellik istiyorsanız, uygulamanızın hedeflerine ulaşmanın tek yolu budur. Aşağıdaki çerçeveler Objective-C sınıfları sağlamaz:
-
Ses Araç Kutusu
-
CFNetwork
-
Çekirdekli MIDI
-
Çekirdek Metin
-
Dizin Hizmeti (LDAP ve Açık Dizin gibi)
-
Güvenlik > OS X'in özelliklerinden tam olarak yararlanabilecek uygulamalar oluşturmak isterseniz, Objective-C olmayan kod kitaplıklarının kullanımını desteklemeye hazır olmanız gerekir.
Objective-C Macintosh Uygulamaları C ++ Kodu
Objective-C, kalıtım ve polimorfizm gibi Macintosh uygulaması geliştirme için nesne yönelimli özellikler sağlar. Dil, C programlama diline dayanmaktadır; Dolayısıyla, C programlama bilgisini Objective-C içinde kodlamak için kullanabilirsiniz. Objective-C ++, Objective-C kaynak modüllerinin Objective-C ++ sınıflarıyla çalışmasına izin veren ve C ++ kod kitaplıklarıyla derleyip bağlayabilen bir köprü mekanizmasıdır.
Aşağıdaki basitleştirilmiş bir kare matris örneği, bir Matrix sınıfı için bir C ++ başlık dosyasının içeriğini gösterir. Matrix sınıfı, bir C ++ sınıfı için standart kurucu ve yıkıcı ile birlikte gelir ve yöntemler basit bir kare matris nesnesi için ne bekleyeceğinizdir:
class Matrix {public: Matrix (int inSize); sanal ~ Matrix (); int getSize (void); int getDeterminant (void); void setElement (int inRow, int inCol, int inValue); int getElement (int inRow, int inCol); Matris operatörü + (const Matrix & inAddend); private: int m_size; int [] [] m_elements;};
Objective-C ++ kullanmak için Objective-C ++ sınıf modüllerinin dosya uzantısını kullanması gerekir. mm. Bu, Xcode'ın derleyicisine, sınıfın Objective-C ++ kullanılarak derleneceğini söyler; bu, sınıfınızın C ++ dili anahtar kelimelerini kullanmasına izin verir. Objective-C ++ kullanarak uygulamanız, iki Matrix nesnesini birlikte ekleme gibi temel işlemleri gerçekleştirmek için bir Matrix nesnesi oluşturabilir. Bu, Objective-C ++ kaynak modülünün C ++ Matrisini # import ettiğini varsayar. h dosyası:
- (void) addTwoMatrices {Matrix matrixOne (3); // 3x3 matris Matris matris İki (3); // başka int rowIndex = 0; int colIndex = 0; için {rowIndex = 0; rowIndex <3; ++ rowIndex} {colIndex = 0; colIndex <3; ++ colIndex) {// bir elemanın elemanlarını değerlerine ayarlar matrixOne. setElement (rowIndex, colIndex, XXX); // ikinci elemanın elemanlarını matrisin ikinci değerlerine ayarlayın. setElement (rowIndex, colIndex, YYY);}} Matris matrixSum = matrixOne + matrixTwo;
Uygulamalarınız Objective-C ++ ile C ++ için yazılmış tüm üçüncü parti kütüphanelerden yararlanabilir.