Jan 302013
 

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.

Jan 272013
 

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

@interface Box : NSObject

@property (nonatomic, assign) CGFloat height;
@property (nonatomic, assign) CGFloat width;
@property (nonatomic, assign) CGFloat length;

Contohnya ada satu array yang mempunyai boxes, dan anda nak tambahkan total height.

NSArray *boxes = ... //Initialize boxes height, width, and length

//Cara biasa nak tambahkan total height
CGFloat totalHeight = 0;
for (Box theBox in boxes)
{
    totalHeight += theBox.height
}

//Menggunakan KVC untuk tambah height
CGFloat totalHeight = [[boxes valueForKeyPath:@"@sum.height"] floatValue];

Macam mana, lagi simple bukan? Contoh lagi jika nak hanya widths array

//Menggunakan cara biasa untuk dapatkan widths array
NSMutableArray *widths = [NSMutableArray array];
for (Box theBox in boxes)
{
    [widths addObject:@(theBox.height)];
}

//Menggunakan KVC untuk dapatkan array of widths
NSMutableArray *widths = [boxes valueForKeyPath:@"height"];

Jika anda lihat @sum dinamakan collection operator, ada beberapa lagi collection operator seperti @avg, @min, @max dan @count seperti dalam documentation

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.

Jan 192013
 

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

Intro Xcode 1

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

Intro Xcode 2

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.

Intro Xcode 3

4. Kemudian anda akan dipaparkan seperti gambar di bawah

Screen Shot 2013-01-20 at 9.13.54 AM

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.

Intro Xcode 5

Jan 182013
 

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.

Jan 142013
 

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

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.

 

Download Code:

Jan 142013
 

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