Pengantar iOS
- Objective-C adalah superset dari C. Artinya perintah Objective-C relatif saama tapi lebih banyak dari pada perintah Bahasa C.
- Inheritance tunggal, class hanya mewarisi dari satu Superclass
- Dapat menggunakan protokol (protocol) & delegasi (delegation) atau kategori (categories) untuk memperluas class.
- Dinamis saat runtime
- Menggunakan getter dan setter untuk mengakses memori instances object di dalam sebuah class.
File-File Objective-C
.h
|
File Header. File Header berisi class, type, function, dan deklarasi contant.
|
.m
|
File Sumber. ini adalah ekstensi yang biasa digunakan untuk source file dan dapat berisi objective-C dan kode C.
|
.mm
|
File Sumber. Sebuah source file yang berisi kode C++ dengan kode tambahan untuk objective-C dan kode C. Ekstensi ini digunakan jika benar-benar merujuk class pada C++ atau fitur dari kode objectice-C
|
Koding Praktek
MVC: Model-View-Controller
Pendekatan Modular
Ketika object dibutuhkan, maka akan di load ke dalam memori
Setiap layar informasi adalah terpisah “View Controller yang dapat digunakan kembali
Setiap ViewController mempunyai sebuah class (file .h & .m)
Object antarmuka seperti View dalam Storyboard atau file Xib
Polymorphism oleh subclass Views dan Objects.
Polymorphism “mempunyai banyak bentuk” yang juga merupakan salah satu sifat class yang memungkinkan sebuah method mempunyai nama yang sama, namun memiliki aksi yang berbeda.
Model-View-Controller
Pola Desain MVC
Model - Data atau object yang dimanipulasi atau ditampilkan.
View - Aspek visual antarmuka pengguna.
Controller - Aspek input antarmuka pengguna. Controller menerima input pengguna (mouse, keyboard, network events, dll) dan melakukan operasi model atau melihat pembaharuan dalam menanggapi masukan.
Pendekatan ini memungkinkan Anda memisahkan tanggung jawab kode dengan tepat.
Diagram MVC
Sumber: Esri
Dasar OOP
Encapsulation: Menyimpan implementasi dari object dari antarmuka. Private, Protected, Public.
Polymorphism: Kemampuan object yang berbeda untuk merespon, masing-masing dengan caranya sendiri, untuk pesan identik. misalnya. Circle & Eclipse.
Inheritance: Untuk inheritance property yang lain. Objective-C memiliki inheritance tunggal, hanya class yang mewarisi dari satu superclass.
Variabel Dasar
Type
|
Keterangan
|
General
|
id
|
Object
|
NSObject
|
Number
|
int float, double, NSNumber
|
Character atau String
|
varchar, chat, NSString @”string”
|
Array atau Multi-dimensional array
|
NSArray, NSMutableArray, NSDictionary, MSMutableDictionary.
NSArray adalah suatu berguna yang disediakan untuk menyimpan data.
NSMutableArray digunakan untuk menunjukkan tipe array yang berbeda.Perbedaannya adalah bahwa Anda tidak bisa menambah dan menghapus isi dari NSArray setelah anda membuatnya, tapi anda bisa menambah ataupun menghapus isi dari NSMutableArray kapanpun anda mau.
Untuk membuat array, dengan menggunakan: @[ item1, item2, item3 ]
setiap isi dari array adalah string. Untuk membuat string di Objective-C. anda harus menambahkan simbol @ didepannya. Jadi jika app anda crash ketika anda menggunakan string, periksa kembali apakah anda lupa menggunakan simbol @!
Perbedaan tipe array: NSArray ddan NSMutableArray sejauh ini dua-duanya sudah melaksanaan pekerjaan yang sama, Gunakan NSMutableArray jika ingin mengubah/mengupdate array tersebut, seperti namanya, mutable array dapat diubah. Dan normal NSArray adalah statis dan anda tidak tidak bisa menambah item yang baru atau menghapus suatu item dari array dengan mudah.
|
Boolean | BOOL |
Data | NSData |
Istilah
Direktif ini identik dengan #include kecuali bahwa ini memastikan file yang sama tidak pernah disertakan lebih dari sekali. Oleh karena itu disukai dan digunakan ditempat #include di contoh kode seluruh dokumentasi Objective-C
Istilah
|
Keterangan
|
Self
|
Sebuah nama variabel yang dapat digunakan dalam berbagai cara, bahkan diberi nilai baru. Di dalam instance method, self refers mengacu pada instance, tapi dalam sebuah class method, self refers mengacu pada class object.
Self adalah special keyword yang berarti “class yang sekarang” - mirip this pada bahasa pemrograman yang lain.
Ada bisa mengakses properti dari suatu class dengan menggunakan titik, dan kemudian mengetikan nama propertinya, mis: self.myQuotes memungkinkan anda mengakses properti myQuotes yang ada buat sebelumnya.
|
Super
|
Sebuah flag untuk compiler yang berpengaruh dalam proses mencari metode untuk mengerjakan; ini digunakan sebagai penerima pesan.
|
IBOutlet
|
Sebuah variabel instance khusus sebagai referensi dari object lain. IBOutlet adalah menghubung dari code program ke komponen pada user interface. Atau properti yang kelas digunakan untuk terhubung ke element interface pengguna.
|
IBAction
|
Sebuah metode khusus yang dipicu oleh object user interface. IBAction adalah metode yang merespon event (misalnya, sentuhan tombol).
|
#import | |
@Class | Deklarasi forward. Deklarasi ini hanya menggunakan nama class sebagai jenis dan tidak bergantung pada setiap detail dari kelas antarmuka (metode dan variabel instance) direktif @class memberikan peringatan pada compiler apa yang diharapkan. Namun, dimana antarmuka untuk kelas sebenarnya digunakan (contoh dibuat, pesan yang dikirim) antarmuka class harus diimport. |
Atribut @Property
Istilah
|
Keterangan
|
atomic
|
Atomic adalah default behavior. Jika suatu object dinyatakan sebagai atomic maka akan menjadi thread-safe. Berarti thread-safe, pada suatu kondisi dimana hanya satu thread dari instance tertentu yang berasal dari class itu sajadapat memiliki kontrol atas object tersebut.
Jika thread ini melakukan getter method maka thread lain tidak dapat melakukan setter method pada object tersebut. dan ini akan menjadi lambat.
Contoh:
@property NSString *name; //by default atomic`
@property (atomic)NSString *name; // explicitly declared atomic`
|
nonatomic | Atribut nonatomic dapat meningkatkan performance dengan mengorbankan thread-safety. Non atomic adalah thread tidak aman. Anda dapat menggunakan Atribut properti nonatomic untuk menemukan bahwa synthesized accessors hanya mengatur atau mengembalikan nilai secara langsung, dengan tidak menjamin apa yang terjadi jika nilai yang sama diakses secara bersamaan dari threads yang berbeda. Untuk alasan ini, lebih cepat mengakses properti nonatomic jika dibandikan dengan atomic. Contoh: @property (nonatomic)NSString *name; |
Retain | Retain diperlukan bila atribut berupa pointer ke object. Metode setter akan meningkatkan retain count object, sehingga akan menempati memori pada autorelease pool. Contoh: @property (retain)NSString *name; |
Copy | Jika menggunakan copy, anda tidak dapat menggunakan retain. Penggunaan copy instance dari class akan berisi copy itu sendiri. Bahkan jika mutable string diatur dan kemudian berubah, misalnya menangkap apa saja nilai itu pada waktu yang ditetapkan. Tidak ada metode setter dan getter |
Strong | Strong adalah pengganti untuk retain. Atribut Strong mengindikasikan bahwa pointer ke variabel akan tetap di memory selama object yang memakai pointer masih tetap ada. Strong: ini menspesifikasikan bahwa runtime harus seara otomatis menjaga referensi strong pada object. atau dengan kata lain, kita menginginkan agar ARC runtime tetap mengkeep object di dalam memori selama ada referensi, dan men-deallocate karena tidak ada referensi lagi. Contoh: @property (nonatomic, strong) AVPlayer *player; |
@properties | Adalah satu metode yang digunakan untuk memberi nilai (setter) ke sebuah variabel atau mengambil nilai (getter) dari sebuah variabel dalam sebuah objek.
Pendeklarasian Propery
Property dideklarasikan dalam interface menggunakan @propery
pada implementation property ini harus di synthesize menggunakan @synthesize
Syntax:
@interface nameInstance: NSObject {
tipeData namaVariabel;
}
@property tipeData namaVariabel;
@end
@implementation namaInterface
@synthesize namaVariabel;
@end;
Pengambilan Nilai dari Variabel (Getter)
Syntax:
[namaObjek namaVariabel]
atau
namaObjek.namaVariabel
Contoh:
Buatlah sebuah proyek dengan nama Properties dan isilah file main.m dengan kode berikut ini:
#import |
@properties | Adalah satu metode yang digunakan untuk memberi nilai (setter) ke sebuah variabel atau mengambil nilai (getter) dari sebuah variabel dalam sebuah objek. |
Assign | ini berarti property di set secara langsung, tanpa ada keterlibatan dari memory management. ini yang biasa kita set untuk tipe data primitive (non-object) seperti float. |
Objective-C NSLog Output
Format
Spesifikasi
|
Keterangan
|
%@
|
General | Boolean | NSDate | String.
NSLog(@ "String value is: %@", _myName);
NSLog(@"the current date is %@",today);
|
@f, %g
|
Float | Double.
NSLog(@"double value is: %f", _double); |
@i
|
Integer | Long
NSLog(@"The value of integer num is %i", num); NSLog(@"long value is: %i", _long); |
Catatan: Programmer menggunakan fungsi NSLog untuk debug app.
Fungsi NSLog digunakan untuk menampilkan pesan debug pada konsol.
Class Declaration
Catatan: “-” dan “+” diperlukan untuk method declaration. “-” berati menggunakan Instance Method dan “+” berarti menggunakan Class Method
Method & Messaging
Pemanggilan Method
Pembuatan method:
- (void)myMethod {
//Your code here
}
- (void)myName:(NSString *)fullname myAge:(int)age {
//Your code here
}
Pemanggilan method:
[self myMethod];
[self myName:@”Muhamad Yusup” myAge:34];
Catatan: @ berarti nilai string diperlukan.
Allocating & Initializing Object
2 Tahapan untuk membuat object menggunakan objective-C:
1. Mengalokasikan secara dinamis untuk object baru
2. Menginisialiasi memori yang baru dialokasikan untuk nilai yang tepat
Memory Allocation
- Automatic Reference Counting (ARC)
- Now ARC by default is automatic
- No more retain, release
- No more Dealloc!
- Menggunakan referensi weak & Strong referencing untuk objects
- ARC is not garbage collector but somewhere is beetween manual and garbage collector
Protocol & Delegate
Protocol:
Adalah programatik antarmuka setiap kelas dapat memilih untuk diterapkan. Kelas mengadopsi dapat memilih untuk melaksanakan satu atau lebih metode yang dideklarasikan.
@interface myViewController: UIViewController
<UIAlertViewDelegate> //berarti kelas ini sesuai dengan UIAlertViewDelegate protocol
@interface myViewController: UIViewController
<UIAlertViewDelegate, UISplitViewControllerDelegate> //Jika lebih dari 1 (satu) delegate terpisah dengan koma
Delegate:
Sebuah object yang telah ditetapkan oleh object lain sebagai object yang bertanggung jawab untuk menangani event.
Categories:
Memungkinkan untuk menambah metode untuk class yang ada, tanpa perlu superclass. Bisa juga menimpa class yang ada. Dalam C#, dikenal sebagai metode ekstensi.
Kategori mengikuti sintaks layout yang sama seperti sebuah class, yang dimiliki pada implementation dan interface.
Catatan:
Setiap blok kode (antarmuka dan implementasi) harus dalam file masing-masing sendiri oleh konvensi.
Namun, nama kategori sedikit berbeda.
Dua file yang telah dibuat diberi nama: NSString + reverse.h (interface) dan NSString +reverse.m (implementation).
0 Response to "Objective-C"
Post a Comment