Video: Swift Programming Tutorial for Beginners (Full Tutorial) 2024
Oleh Karl G. Kowalski
Pengembangan aplikasi Macintosh memerlukan kreativitas, keterampilan pemrograman Objective-C, beberapa kesabaran, dan pertolongan yang bagus untuk menerapkan, memperbaiki, dan kirimkan aplikasi Macintosh Anda ke dalam urutan kerja yang baik kepada pengguna Anda. Dalam perjalanan menuju tujuan ini, Anda akan menghadapi beberapa tantangan yang akan menguji kemampuan pemrograman dan pemecahan masalah Anda. Anda harus mengatasi dengan (antara lain) menggunakan delegasi untuk menerapkan aplikasi callback; menggunakan kerangka kerja non-Objective-C dari Apple; dan memasukkan kode C ++ ke aplikasi Anda.
Menerapkan Callback dalam Aplikasi Macintosh
Pengembangan aplikasi Macintosh menggunakan callback untuk mengizinkan Mac OS X mengeksekusi kode dalam aplikasi Anda untuk operasi tertentu. Jika Anda membuat aplikasi berbasis Macintosh atau dokumen berbasis standar, kode pertama yang akan dijalankan oleh OS X adalah salah satu dari metode panggilan balik berikut yang harus Anda buat untuk aplikasi Anda, bergantung pada desain aplikasi:
-
Aplikasi berbasis jendela: (void) applicationDidFinishLaunching: (NSNotification *) aNotification
-
Aplikasi berbasis dokumen: (void) windowControllerDidLoadNib: (NSWindowController *) windowController
Panggilan balik hanyalah sebuah metode yang akhirnya dieksekusi oleh OS saat mencoba memasok atau mengambil informasi dari aplikasi Anda. Kode aplikasi Anda akan menjalankan metode untuk kelas Kakao di mana aplikasi Anda memiliki kesempatan untuk memberi nama metode salah satu kelas Anda, untuk dipanggil pada objek kelas yang juga harus disediakan aplikasi Anda.
A mendelegasikan adalah objek pembantu, yang digunakan kelas Kakao untuk memperluas fungsionalitas kelas dengan mengizinkan Anda menerapkan kode yang akan dilakukan kelas Cocoa dalam keadaan tertentu. Kelas Kakao memeriksa objek delegasinya (jika ada yang ditugaskan) apakah delegasi tersebut memberikan penerapan metode tertentu. Jika delegasi memiliki metode itu, kelas Cocoa mengeksekusi metode itu; Jika delegasi tidak menerapkan metode spesifik itu, kelas Kakao menggunakan metode default untuk kesalahannya sendiri atau log. Sebagian besar delegasi harus memasukkan protokol yang menentukan metode apa yang mungkin mereka terapkan; delegasi kode Anda harus menggunakan metode penerapan dari protokol spesifik yang diharapkan oleh delegasi.
Berikut adalah beberapa objek Kakao yang bisa menggunakan delegasi untuk mengeksekusi kode Anda:
-
NSTableView.NSTableView menerima delegasi yang mematuhi protokol NSTableViewDelegate. Ini mencakup 20 sampai 30 metode yang dapat diundangkan oleh objek aplikasi Anda untuk mendukung kebutuhan aplikasi Anda untuk mengetahui apa yang dilakukan NSTableView. Ada metode yang akan dipanggil dalam aplikasi Anda saat perlu mengetahui dan bereaksi terhadap tindakan, seperti saat pengguna membuat pilihan di tabel atau saat kolom diubah ukurannya.
-
NSApplication. Anda dapat menetapkan NSApplicationDelegate untuk menangani beberapa metode yang akan diterima oleh aplikasi NSApplication (aplikasi Anda). Metode ini bisa disebut tepat sebelum atau sesaat setelah aplikasi Anda menjalankan metode lain, sehingga aplikasi Anda dapat disiapkan.
-
NSWindow. NSWindowDelegate yang ditugaskan ke salah satu jendela aplikasi Anda akan memberi kesempatan pada aplikasi Anda untuk merespons perubahan ukuran, pergerakan, atau acara jendela pengguna lainnya.
-
NSMenu. Anda menerapkan NSMenuDelegate untuk mendukung acara yang terjadi saat pengguna berinteraksi dengan menu di aplikasi Anda.
Kerangka Kerja Non-Objective-C dalam Aplikasi Macintosh
Apple menyediakan banyak kerangka pengembangan aplikasi Macintosh (perpustakaan kode) yang dapat dihubungi aplikasi Anda untuk melakukan ribuan operasi di OS X. Banyak kerangka kerja ini, seperti PDF Kit, terdiri dari kelas Objective-C, dari mana aplikasi Anda dapat membuat dan menggunakan objek dalam aplikasi Anda. Namun, beberapa kerangka kerja ini hanyalah perpustakaan fungsi yang dapat dijalankan aplikasi Anda.
Misalnya, kerangka kerja CFNetwork adalah seperangkat fungsi yang dapat digunakan aplikasi Anda untuk melakukan koneksi jaringan dengan baik. Kelas NSURL menyediakan serangkaian operasi jaringan dasar yang bagus untuk mengambil data menggunakan URL. Jika aplikasi Anda memerlukan kontrol lebih terhadap komunikasi jaringan yang diawali, Anda harus menggunakan kerangka kerja dan fungsi CFNetwork. Anda bisa menggunakan kode berikut untuk menyiapkan permintaan HTTP untuk dikirim ke URL tertentu:
CFStringRef httpBody = CFSTR ("); CFStringRef headerFieldName = CFSTR (" Cookie "); // tambahkan kue tertentu ke permintaan HTTP CFStringRef headerFieldValue = CFSTR ("loginID = my_user_name; password = my_password;"); CFStringRef url = CFSTR ("www diabeticpad com"); CFURLRef urlRef = CFURLCreateWithStrign (kCFAllocatorDefault, url, NULL); CFStringRef requestMethod = CFSTR ("GET"); CFHTTPMessageSetHeaderFieldValue (request, headerFieldName, headerFieldValue); CFDataRef serialalizedHttpRequest = CFHTTPMessageCopySerializedMessage (request);
Setelah kode Anda memiliki? CFHTTPMessageRef request = CFHTTPMessageCreateRequest (kCFAllocatorDefault, requestMethod, url, kCFHTTPVersion1_1); CFHTTPMessageSetBody (request, httpBody); // tambahkan cookie CFHTTPMessageSetHeaderFieldValue permintaan serial, aplikasi Anda kemudian dapat membuka alur tulis untuk menyampaikan permintaan ke tujuannya.
Semua kerangka kerja Apple berbasis C menyediakan set fungsi untuk melakukan jenis pemrograman tingkat rendah ini. Kode Anda akan menjadi lebih rumit, namun Apple tidak menyediakan kelas Objective-C untuk semua kerangka kerjanya.Jika Anda benar-benar memerlukan fungsionalitas yang tersedia di salah satu kerangka kerja tersebut, inilah satu-satunya cara untuk mencapai sasaran aplikasi Anda. Kerangka kerja berikut tidak menyediakan kelas Objective-C:
-
Audio Toolbox
-
CFNetwork
-
Core MIDI
-
Teks Inti
-
Layanan Direktori (seperti LDAP dan Open Directory)
-
Security > Jika Anda ingin membuat aplikasi yang dapat memanfaatkan fitur OS X secara penuh, Anda harus siap mendukung penggunaan perpustakaan kode non-Objective-C.
Kode C ++ untuk Aplikasi Objective-C Macintosh
Objective-C menyediakan fitur berorientasi objek untuk pengembangan aplikasi Macintosh, seperti pewarisan dan polimorfisme. Bahasa ini didasarkan pada bahasa pemrograman C; Oleh karena itu, Anda dapat menggunakan pengetahuan pemrograman C Anda ke kode dalam Objective-C. Objective-C ++ adalah mekanisme jembatan yang memungkinkan modul sumber Objective-C bekerja dengan kelas Objective-C ++, yang dapat mengkompilasi dan terhubung dengan pustaka kode C ++.
Contoh sederhana berikut dari matriks kuadrat menunjukkan isi file header C ++ untuk kelas Matrix. Kelas Matrix hadir dengan konstruktor dan destruktor standar untuk kelas C ++, dan metodenya adalah apa yang Anda harapkan untuk objek matriks bujursangkar dasar:
class Matrix {public: Matrix (int inSize); virtual ~ Matrix (); int getSize (void); int getDeterminant (void); void setElement (int inRow, int inCol, int inValue); int getElement (int inRow, int inCol); Operator matriks + (const Matrix & inAddend); pribadi: int m_size; int [] [] m_elements;};
Untuk menggunakan Objective-C ++, modul kelas Objective-C ++ Anda harus menggunakan ekstensi file. mm. Ini memberitahu kompiler Xcode bahwa kelas akan dikompilasi dengan menggunakan Objective-C ++, yang memungkinkan kelas Anda menggunakan kata kunci bahasa C ++. Menggunakan Objective-C ++, aplikasi Anda bisa membuat objek Matrix untuk melakukan operasi dasar, seperti menambahkan dua benda Matriks bersama-sama. Ini mengasumsikan modul sumber Objective-C ++ telah #mengimpor C ++ Matrix. h file:
- (void) addTwoMatrices {Matriks matriksOne (3); Matriks matriks matriks 3x3Dua (3); // int intIndex = 0; int colIndex = 0; untuk (rowIndex = 0; rowIndex <3; ++ rowIndex) {untuk (colIndex = 0; colIndex <3; ++ colIndex) {// atur elemen matriks satu ke matriks nilai merekaOne. setElement (rowIndex, colIndex, XXX); // atur elemen matriks dua ke beberapa matriks nilai lainnyaDua. setElement (rowIndex, colIndex, YYY);}} Matriks matriksSum = matriksOne + matriksDua;
Dengan Objective-C ++, aplikasi Anda dapat memanfaatkan semua perpustakaan pihak ketiga yang ada yang ditulis untuk C ++.