Wednesday, January 30, 2013

Daripada Java ke Objective C

Kepada sesiapa yang baru nak belajar objective c daripada Java background atau dari language lain, ini presetation slide yang bagus untuk permulaan.

http://www.slideshare.net/bobmccune/ob-4933190

Slide ni tahun 2010 lagi masa iOS 4,  tapi masih lagi boleh guna. Sejak ios 5 dah tak perlu fikir pasal memory management dalam kebanyakan kes sebab semua dah di manage oleh Automatic Reference Counting atau ARC.

Sunday, January 27, 2013

Key Value Coding

Biasanya programming language menggunakan dot syntax untuk  panggil method atau dapatkan property.

contohnya,

//get
CGFloat height = box.height;

//set
box.height = 5;

Dengan menggunakan KVC, untuk set atau get


//get
[box setValueForKey:@"height"];

//set
CGFloat height = [box valueForKey:@"height];

Dengan menggunakan KVC ada banyak kelebihan. Contohnya anda ada satu Class Box . Di bawah menunjukkan interface class box, ada 3 properties height, width dan length


Contohnya ada satu array yang mempunyai boxes, dan anda nak tambahkan total height. Macam mana, lagi simple bukan? Contoh lagi jika nak hanya widths array Jika anda lihat @sum dinamakan collection operator, ada beberapa lagi collection operator seperti @avg, @min, @max dan @count seperti dalam documentation
http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html
 Yang menarik adalah boleh juga kalau nak define custom operator sendiri. Dalam objective c tak semestinya menggunakan KVC tapi ada sesetengah tempat yg lebih baik menggunakan KVC. Dengan menggunakan KVC juga dapat memendekkan lagi code dan juga menjadikan code nampak lebih kemas seperti contoh di atas.

Saturday, January 19, 2013

Hello World

Programming iOS/Mac memerlukan Xcode ide. anda boleh download dengan free di Mac App Store atau mungkin dari tempat lain.

1. Apabila pertama kali buka Xcode, anda akan dipaparkan seperti di bawah. Pilih Create New Project


















2. Kita akan buat OSX application, click Cocoa Application dan tekan Next



3. Kemudian tulis nama application kat product name 'Intro'. Pastikan Use Automatic Reference Counting (ARC) dicheck. Dengan ARC kita tidak perlu fikir banyak pasal memory management. Uncheck Core Data, Core Data adalah untuk application yang berasaskan database. Kemudian tekan Next.















4. Kemudian anda akan dipaparkan seperti gambar di bawah















5. Di Project Navigator, anda dapat lihat files yang dicreate secara automatik oleh Xcode. Yang perlu diberi perhatian adalah AppDelegate.h, AppDelegate.m dan MainMenu.xib.

6. Dalam objective C, Class file dibahagi kepada '.h' dan '.m'. Header file adalah file '.h', ia berfungsi untuk declaration class variable/property. '.m' file pula adalah implementation file, iaitu dimana code body akan ditulis. File separation antara '.h' dan '.m' ini juga menjadikan code nampak lebih bersih.

7. Ambil perhatian bahawa class AppDelegate adalah mula-mula dipanggil selepas App dibuka. Untuk Mac, method pertama yang dipanggil oleh App secara automatik adalah applicationDidFinishLaunching.

8. Pergi ke dalam applicationDidFinishLaunching dan tambah code ini. NSLog() berfungsi untuk log ke console. Ia bersamaan dengan printf() untuk c.


9. Kemudian tekan Run di upper left corner. Pertama sekali anda akan dapati satu window kosong. Abaikan window ini kerana ia tak termasuk dalam tutorial ini. Sila take note satu view baru dibuka dibawah iaitu Debug Area. Di console anda dapati Hello World! ditulis bermakna anda berjaya untuk langkah pertama.


















Friday, January 18, 2013

Intro kepada iOS/Mac Programming

Sebelum belajar programming untuk iOS/Mac, ada beberapa perkara yang perlu diketahui

Beberapa Kelebihan objective c

1. Tak perlu fikir memory management sebab dihandle secara automatik oleh ARC (kebanyakan kes)

2.  Objective C Adalah subset kpd c language, maksudnya c atau c++ juga boleh diguna selain objective c di XCode

3. Multithreading
Dipanggil Grand Central Dispatch, multithreading untuk Mac/iOS adalah mudah. Dengan GCD, tidak perlu fikir untuk create thread, cuma panggil function dan set untuk di run pada thread yang lain.

4. Animation
Animation di dalam mac/iOS dibahagi kpd implicit dan explicit animation. Implicit animation boleh dikatakan animation yang terjadi dengan automatik. Contohnya jika sesuatu object diubah position. Ia secara auto akan animate ke position yang baru. Untuk explicit animation, satu animation object mesti dibuat terlebih dahulu, explicit animation memungkinkan animation yang lebih advance.
Setiap Animation juga akan secara automatik di run pada thread selain main thread. Ini menjadikan user interface (UI) tidak diblok atau tidak mengganggu kelancaran UI.

5. Dynamic language
Objective c adalah dynamic language. Dengan dynamic language akan memungkinkan code yang ditulis lebih pendek kerana sifat language yang fleksibel. Ia juga menjadikan code lebih baik dan clean.

6. Programming Technology semakin berkembang setiap OS version
Setiap OS/iOS version, akan ada teknologi yang baru daripada Apple. Menariknya kebanyakannya akan lebih memudahkan kita code dengan lebih baik dan setiap API dari apple adalah sangat konsisten menyebabkan lebih senang untuk belajar sesuatu yang baru.

Perkara asas perlu dipelajari

1.Syntax
Belajar objective c syntax adalah paling penting. Ini disebabkan Objective c syntax banyak juga berbeza berbanding programming language lain. Bagaimanapun objective c syntax adalah di design untuk self documenting. Ia membolehkan programmer dapat faham code dengan lebih baik walaupun kurang comment

Contohnya:

Untuk create satu kotak (box), dalam c dan objective c, method syntax adalah

//C

void createBox(float height, float width, float length)
{
    //method body
}

//Objective C
- (void)createBoxWithHeight:(float)height width:(float)width length:(float)length
{
    //method body
}



Untuk panggil method,

//C

createBox(6, 3, 5);

//Objective C
[self createBoxWithHeight:6 width:3 length:5];


Sesiapa yang baru belajar objective c pastinya pening dengan syntax yang digunakan. Tetapi ia convenient dan self documenting. Sebelum semicolon, semuanya adalah sebahagian daripada method, ia adalah sebagai self description yang pendek, kalau letak apa-apa nama pun boleh sebenarnya. Selepas semicolon adalah nilai parameter yang dipass.





Monday, January 14, 2013

Core Animation Intro


بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ


Untuk pendahuluan, saya tunjuk satu video yg menggunakan core animation, iaitu API utk membuat animation dlm cocoa.

Dalam video ada 3 situasi

1. Ketika mouse diklik, object merah bergerak ke mouse tanpa animation (implicit animation disabled)
2. Ketika mouse di drag, object merah bergerak menggunakan implicit animation dan object biru berputar dengan explicit animation
3. Ketika mouse dilepas, object biru bergerak ke mouse dgn explicit animation

Secara kasar, implicit animation maknanya animation terjadi dengan automatik, contohnya hanya tukar property value dan secara automatic terjadinya animation. Explicit animation pula perlu coding dan boleh digunakan untuk animation yg lebih advance.




Jika anda baru belajar, mesti code mcm tk masuk akal, tetapi selepas belajar basic, ini hanya sesuatu yg mudah, kerana core animation sendiri mmg api yg mudah.


Code
Download



Assalamualaikum,

Blog ni  akan menceritakan pasal Apple Mac OS dan juga programming tutorial untuk Apple device.

Saya seorang programmer yang masih belajar lagi menggunakan Cocoa framework iaitu programming untuk Apple device dan juga telah membuat beberapa apps untuk Mac OS

Jika ada soalan sila kemukakan di ruangan komen atau emel
lutfime_2000@yahoo.com