Objective-C

Pengantar iOS

  1. Objective-C adalah superset dari C. Artinya perintah Objective-C relatif saama tapi lebih banyak dari pada perintah Bahasa C.  
  2. Inheritance tunggal, class hanya mewarisi dari satu Superclass 
  3. Dapat menggunakan protokol (protocol) & delegasi (delegation) atau kategori (categories) untuk memperluas class. 
  4. Dinamis saat runtime 
  5. 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

Catatan Tambahan: File .Xib dan file Storyboard pada dasarnya adalah file antarmuka.

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. 
BooleanBOOL
DataNSData

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
@ClassDeklarasi 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`


nonatomicAtribut 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;
RetainRetain 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;
CopyJika 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
StrongStrong 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;
@propertiesAdalah 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
@propertiesAdalah 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