Learn Objective-C: Day 3

အခြား အပိုင်းက Series တွေကတော့

Class from Apple (and some history)

Apple မှာ classes တွေ အများကြီးရှိပြီး တော်တော်များများဟာ NS နဲ့ စပါတယ်။ NS ဆိုတာက NextStep ရဲ့ အတိုကောက်ပေါ့။ NeXT ဆိုတာကတော့ Steve Jobs Apple ကနေ ထွက်ပြီးနောက်ပိုင်းမှာ workstation computer တွေပေါ်မှာ run ဖို့ operation system တွေပါ။ NeXTSTEP မှာ object orientated programming ကို အသုံးပြုထားပါတယ်။ NS ကလည်း NeXTSTEP ကနေ ဆင်းသက်လာတာပါ။ Apple က NeXTSTEP ကို ဝယ်ပြီးနောက် Mac OS X ကို NeXTSTEP ပေါ်မှာ အခြေခံခဲ့ပြီး ထုတ်ခဲ့ပါတယ်။

အချို့ common classes တွေကို အောက်မှာ ဖော်ပြထားပါတယ်။

  • NSString ကတော့ string စာကြောင်းတွေ အတွက်ပေါ့။
  • NSMutableStrng ကတော့ mutable string တွေအတွက်ပါ။
  • NSArray ကတော့ immutable object တွေ အတွက်ပါ။
  • NSMutableArray ကတော့ object array mutable တွေအတွက်ပေါ့။
  • NSNumber ကတော့ number တွေအတွက်ပေါ့။

object က immutable ဆိုတာကတော့ object ကို create လုပ်ပြီး assign လုပ်တဲ့အခါမှာ value က static ဖြစ်သွားပါတယ်။ ပြန်ပြောင်းလို့မရတော့ပါဘူး။ တကယ်လို့ object က mutable ကတော့ ပြောင်းလဲလို့ရတဲ့ dynamic ပေါ့။ object ကို create လုပ်ပြီး နောက်ပိုင်း ပြန်ပြောင်းလို့ရပါတယ်။

Pointers and Initializing

ကဲ.. code လေးကို အရင် ကြည့်ရအောင်

#import

int main (int argc, const char * argv[]) {

NSString *testString;
testString = [[NSString alloc] init];
testString = @"Here's a test string in testString!";
NSLog(@"testString: %@", testString);

return 0;

}

Xcode ကနေ File > New Project > Mac OSX > Application > Command Line Tool > Type: Foundation ကနေ create လုပ်ထားလိုက်တာပါ။ ပေးထားတဲ့ နာမည်နဲ့ source folder အောက်က extension .m file လေးကို အပေါ်က code လို ပြင်ကြည့်ပါ။

အပေါ်က code တွေကနေ ရှင်းပြပါမယ်။

int main(int argc, const char * argv[]) { 

C သမားတွေကတော့ သိပြီးသားပါ။ program တစ်ပိုဒ်စရင် main နဲ့ စပါတယ်။ two parameter ရှိပြီး , နဲ့ ပိုင်းထားပါတယ်။ arguments passing လုပ်ဖို့အတွက်ပေါ့။

NSString *testString;
testString = [[NSString alloc] init];

အဲဒါကတော့ testString ကို pointer နဲ့ create လုပ်ပြီး NSString object ကို ခေါ်လိုက်တာပေါ့။ အပေါ်က တစ်ကြောင်းပြီးသွားပေမယ့် tesString က object အနေနဲ့ပဲ ရှိနေအုံးမှာပါ။ နောက် တစ်ကြောင်းကမှ testString ထဲမှာ init လုပ်ပေးလိုက်တာပါ။

အဲဒါကို အောက်ကလို ပြန်ပြင်ရေးလို့ရပါတယ်။

testString = [NSString alloc];
[testString init];

nested ရေးတာကတော့ တစ်ကြောင်းတည်းပြီးသလို အခု လို ၂ ကြောင်းနဲ့ ရေးလိုက်လည်း ရပါတယ်။

testString = @"Here's a test string in testString!";

NSString မှာ စာတွေ ထည့်ဖို့အတွက် @ sign ကို ရှေ့ ဆုံးမှာ ထည့်ဖို့လိုပါတယ်။

NSLog(@”testString: %@”, testString);

%@ ဆိုတာကတော့ Objective-C object ကို ဆိုလိုတာပါ။ %@ နေရမှာ testString ကို အစားထိုးမှာပါ။ ကဲ … အပေါ်က code ကို run ကြည့်လိုက်ပါ။ Command + Shfit + R ကို နှိပ်ပြီး Debugger Console ကို ဖွင့်ဖို့လိုပါတယ်။ NSLog နဲ့ ထုတ်ထားတာတွေကတော့ Debugger Console မှာပဲ မြင်ရမှာပါ။

Inheritance

NSString ကို ကျွန်တော်တို့ သိပါပြီ။ NSMutableString , NSArray စတာတွေကလည်း single NS Class တွေပါပဲ။ code တွေ အားလုံးမှာ init လုပ်ဖို့ လိုပါတယ်။ အဲလို လုပ်ရတာ အလုပ်ပိုတယ်လို့ ထင်နေတယ်မဟုတ်လား။ ဟုတ်ပါတယ်။ root Class က NSObject ဖြစ်ပြီး သူ့ ပေါ်မှာ implemented လုပ်ထားရပါတယ်။ ဘာကြောင့်လည်းဆိုတော့ အဆင့်ဆင့် inherit အချင်းချင်းလုပ်ထား ပါတယ်။

NSMutableString ဆိုရင် NSString က parent ပါ။ NSString ရဲ့ parent ကတော့ NSObject ပါ။

NSObject မှာ method အသုံးပြုဖို့အတွက် init လုပ်ပါတယ်။ ဒါကြောင့် subclass တွေမှာလည်း init ပါလာပါတယ်။ NSObject ဟာ တကယ်တန်းတော့ return ကိုယ့်ဘာသာ မပြန်ထားပါဘူး။ ဒါကြောင့် method တွေကို overwritten လုပ်လို့ရပါတယ်။ NSArray class ဟာ init ကို override လုပ်ထားပြီး functionality တွေ ပေါင်းထည့်ထားပါတယ်။ အဲဒါကြောင့် memory avaiable ဖြစ်ဖို့အတွက်ရယ် လိုအပ်တဲ့ instance variable တွေကိုလည်း ပြင်ဆင်နိုင်ပါတယ်။

inheriting classes တွေက ထပ်ပြီး extend လုပ်နိုင်တဲ့အတွက် အသုံးဝင်လှပါတယ်။ ကျွန်တော်တို့တွေဟာ extend class ကို ထပ်ဆောက်ပြီး လိုအပ်တဲ့ functionality တွေကို ထပ်မံ ဖြည့်ပေးနိုင်ပါတယ်။ ကျွန်တော်တို့ ကိုယ်ပိုင် NSString version ကို ဖန်တီးပြီး methods တွေ ထပ်ဖြည့်နိုင်ပါတယ်။

Summary

ကျွန်တော်တို့ Class တွေကို ဘယ်လို အသုံးချရမလဲ ဘယ်လို Inheritance လုပ်ထားလဲ။ နောက်ပြီး inheritance လုပ်ထားတဲ့အတွက် ဘယ်လို အသုံးဝင်သလဲဆိုတာတွေကို ဖော်ပြထားပါတယ်။

ဒီအပိုင်းက ကျွန်တော် သိပ်ပြီး ပိုင်နိုင်မှု မရှိပဲနဲ့ ဘာသာပြန်ထားရတဲ့ အပိုင်းဆိုလည်း မမှားပါဘူး။ မှားနေတာတွေ ရှိရင် ထောက်ပြနိုင်ပါတယ်။

reference: http://mobile.tutsplus.com/tutorials/iphone/learn-objective-c-day-3/

Learn Objective-C: Day 2

Day 2 ကို မစခင် အရင်တုန်းက ရေးခဲ့တဲ့ Day 1 လေးကို ပြန်ညွှန်းလိုက်ပါတယ်။

Object Orientated Programming

ကျွန်တော်တို့ ဘာလို့ Objective C ကို သုံးရတာလဲ။ ဘာဖြစ်လို့ C language ကို မသုံးရတာလဲ။ ဘာလို့လည်းဆိုတော့ Objective C ဟာ Object Orientated Programming ဖြစ်ပြီး Application တွေကို တည်ဆောက်ရမှာ လွယ်ကူစေပါတယ်။ OOP ဆိုတာကတော့ programming paradigm တစ်ခုပါ။ သူက Software တစ်ခုကို တည်ဆောက်တဲ့အခါမှာ object တွေ attribute တွေ နောက်ပြီး function တွေ ပါဝင်လာပါတယ်။ OOP မှာ data abstraction, encapsulation, modularity, polymorphism, နဲ့ inheritance တွေ ပါဝင်ပါတယ်။ OOP အကြောင်းပြောရရင် စာအုပ် တစ်အုပ်စာ ဖြစ်သွားပါလိမ့်မယ်။ ဒါကြောင့် စာပြန်နွှေးတဲ့အနေနဲ့ ဒီနေ့မှာတော့ အခြေခံလေးတွေ ပြောသွားပါမယ်။

စဉ်းစားကြည့်လိုက်ပါ။ သင့်မှာ ကား တစ်စီးရှိတယ်။ အဲဒီ ကား ကို object လို့ သတ်မှတ်လို့ရပါတယ်။ ကမ္ဘာပေါ်မှာ ကားတွေ အများကြီးရှိပါတယ်။ ဒါကြောင့် ကားတွေမှာ properties တွေ ရှိလာတယ်။ model , color , engine type စသည်ဖြင့် အများကြီးရှိပါတယ်။ OOP အရဆိုရင် car က abstract class ဖြစ်ပြီး အဲဒီ class ပေါ်မှာ အခြေခံပြီး အခြား car တွေကို ဖန်တီးလို့ရပါတယ်။ car အသစ်တစ်ခုမှာ မူရင်း ကားမှာ သတ်မှတ်ထားတာတွေ အပြင် အခြား properties တွေ ပါလာနိုင်ပါသေးတယ်။

ဟုတ်ပြီ။ ဒါဆိုရင် ဘာကို object လို့ ခေါ်တာလဲ။ အရာတော်တော်များများဟာ Object တွေလို့ သတ်မှတ်လို့ရပါတယ်။ ဥပမာ လူဟာလည်း Object တစ်ခုလို့သတ်မှတ်ရင်လည်း ရပါတယ်။ Object တစ်ခု ထဲမှာ Properties တွေ function တွေ ပါဝင်လာပါတယ်။ လူဟာ လက် ၂ ဖက် ခြေ ၂ ချောင်း properties တွေ ပါဝင်ပြီး လက်တွေ ခြေတွေ ကို ခိုင်းစေဖို့ function တွေ ပါဝင်ပါတယ်။ ဒီလောက်ဆို နည်းနည်း ရှင်းမယ်ထင်တယ်။ OOP သင်ခဲ့တဲ့သူတွေကတော့ လွယ်လွယ် ကူကူ နားလည်နိုင်ပါလိမ့်မယ်။

Class ဆိုတာကလည်း Object ကိုခေါ်တာပါပဲ။ Object က class ကနေ ဖန်တီးထားတာပါ။a နောက်ပိုင်းမှာ တဖြည်းဖြည်းနဲ့ နားလည်ပါလိမ့်မယ်။ အခုထိ ဘာမှ မမြင်ရသေးတော့ နည်းနည်း စိမ်းနေသေးတာမို့ OOP ကို သိခါစကလူတွေ အတွက် ခေါင်း ရှုပ်ကောင်း ရှုပ်ပါလိမ့်မယ်။

Method

ဟုတ်ပြီ။ car ဆိုတဲ့ Object ရှိတယ်။ car မှာ ဆီဖြည့်တာရှိမယ်။ မောင်းတာ ရှိမယ်။ ကွေ့တာရှိမယ်။ နောက်ဆုတ်တာ ရှိမယ်။ ဒါသူ့ရဲ့ Method တွေပေါ့။ Objective C မှာ method ကို ခေါ်ရင် အောက်ကလို ခေါ်ပါတယ်။

[recipient message];

ဒါဆိုရင် car ဆိုတဲ့ object မှာ gas ဖြည့်တာ ဆိုရင် အောက်ကလို ခေါ်ပါလိမ့်မယ်။

[dansCar addGas];

ဒါက Objective C မှာ ခေါ်တဲ့ ပုံစံ ပါ။ Programming Langauge တော်တော်များများကတော့ အောက်ကလို ခေါ်ကြတာ များပါတယ်။

dansCar.addGas();

Objective C ဟာ အခြား programming language တွေနဲ့ ရေးသားတဲ့ syntax က နည်းနည်းလေး ကွဲပြားတဲ့အတွက် Objective C ကို မလေ့လာပဲ iPhone Development ကို ကူးတဲ့အခါမှာ syntax တွေကြောင့် စိတ်အနှောင့်အယှက် ဖြစ်ရတတ်ပါတယ်။

Attributes

gas ကတော့ ဖြည့်ပြီးသွားပြီ။ gas tank ထဲမှာ gas ဘယ်လောက်ရှိလဲသိရဖို့အတွက် လိုလာပါပြီ။ gas tank ထဲမှာ gas 50% ရှိတာလား။ 100% ရှိတာလား ဆိုတာကို သိဖို့လိုပါတယ်။ အဲဒီအတွက် attribute variable လိုလာပါပြီ။ Attribute ဆိုတာကတော့ ဒီ class အတွက် သီးသန့် variable ပေါ့ဗျာ။ OOP နားလည်ပြီးသားသူတွေအနေနဲ့တော့ ပြောလိုက်တာနဲ့ သဘောပေါက်မယ်ထင်ပါတယ်။ OOP အားနည်းတဲ့သူတွေ နားမလည်ရင်လည်း comment မှာ မေးလို့ရပါတယ်။ အားမငယ်ပါနဲ့။ Objective C လုပ်ရင်း OOP ကို နားလည်သွားပါလိမ့်မယ်။

Interface and Implementation

Objective C မှာ အဓိက အားဖြင့် file 2 file ပါဝင်ပါတယ်။ .m နဲ့ .h file ပါ။ Interface ကို .h နဲ့ သိမ်းပြီး implementation ကိုတော့ .m နဲ့ ရေးပါတယ်။

Interface

#import <Cocoa/Cocoa.h>

@interface Car : NSObject {

//This is where attributes go
float fillLevel;

}

//This is where methods go
- (void)addGas;

@end

အဲဒါက Interface တစ်ခု ဖန်တီးထားတာပါ။ ဒါက Objective-C ရဲ့ .h file အခြေခံပေါ့။ ဒီ ဥပမာ က syntax သဘောတရားပဲ ပြထားတဲ့အတွက် run လို့ရမှာမဟုတ်ပါဘူး။ Car ကို Interface တစ်ခု အနေနဲ့ တည်ဆောက်လိုက်တယ်။ NSObject ကတော့ Car class က NSObject ကို inherits လုပ်ထားတယ်ကို ပြောတာပါ။ Attribute အနေနဲ့ Float value fillLevel ပါပါတယ်။ နောက်ပြီး function အနေနဲ့ addGas ဆိုတာ ပါပါတယ်။ (void) ဆိုတာကတော့ return value မရှိဘူးလို့ ဆိုလိုတာပါ။ C နဲ့ ဆင်ပေမယ့် syntax လေးတွေက နည်းနည်း ကွာပါတယ်။

Implementation

#import "Car.h"

@implementation Car

-(void) addGas {
// code goes here to add gas
}

@end

ဒါကတော့ Implementation ပိုင်းဖြစ်တဲ့ .m အပိုင်းပေါ့။ interface မှာ ပြောထားတဲ့ function ကို implementation လုပ်ပါတယ်။ နောက်ပြီး interface မှာ ကြေငြာထားတဲ့ attribute ကို ခေါ်ယူပြီး အသုံးပြုလို့ရပါတယ်။ addGas ကနေ gas ဖြည့်တဲ့ function ကို ရေးသားရပါမယ်။

ကဲ.. ဒီနေ့တော့ ဒီလောက်ပါပဲ။ အခုဆိုရင် Objective C အကြောင်း အနည်းငယ် သိသွားလောက်ပါပြီ။ နောက်နေ့တွေမှာ Objective C အကြောင်းကို ဆက်သွားပါမယ်။ အခုတော့ အခြေခံ သဘောတရားလေးတွေ နွှေးပြီးပြီမို့ Objective C အပိုင်းကိုပဲ ဆက်သွားပါတော့မယ်။

reference : http://mobile.tutsplus.com/tutorials/iphone/learn-objective-c-2/

Learn Objective C : Day 1

Objective C series ထဲမှာ အခြား အပိုင်းများ

Objective C ဆိုတာ ဘာလဲ။

Objective C ဆိုတာကတော့ Objective Oriented Language တစ်ခုဖြစ်ပြီး C Language ပေါ်မှာ အခြေခံထားခြင်းဖြစ်ပါတယ်။ သူဟာလက်ရှိ Mac OS X နဲ့ iOS အတွက် အဓိက programming language တစ်ခုပါပဲ။ အရင်တုန်းကတော့ NeXTSTEP OS ရဲ့ အဓိက language တစ်ခုပါ။ အဲဒီ OS ကို apple က ဝယ်ပြီး OS X ကို ထုတ်လုပ်ခဲ့ပါတယ်။

Objective C ဟာ C ကို အခြေခံထားပြီး C ကိုလည်း run နိုင်ပါတယ်။ Objective C ဟာ C ပါ run နိုင်တာကြောင့် C လုပ်နိုင်သမျှ အကုန်လုံးကို Objective C က လုပ်နိုင်ပါတယ်။

ဘာတွေ လိုအပ်သလဲ။

အခု ကျွန်တော်တို့ iPhone Development မလုပ်သေးခင် Objective C အကြောင်းကို သိထားဖို့လိုပါတယ်။ Objective C ကို စမ်းဖို့အတွက် XCode ကို သွင်းတဲ့အခါမှာ Mac OSX SDK ကိုပါသွင်းခဲ့ဖို့ လိုပါလိမ့်မယ်။ iPhone SDK ကို သွင်းတဲ့အခါမှာ XCode , Interface Builder အပြင် အခြား Application တွေပါပါဝင်ပါတယ်။ ထို့အတူ gcc ကိုလည်း အလိုအလျောက်သွင်းသွားပါလိမ့်မယ်။

Objective C ကို လေ့လာတဲ့ အခါမှာ C ကို အခြေခံသိထားတဲ့ သူတွေဆိုရင် ပိုကောင်းပါလိမ့်မယ်။ C programming language က programmer တော်တော်များများရဲ့ ပထမဆုံး အခြေခံ language ဆိုလည်း မများပါဘူး။ တကယ်လို့ C ကို မလေ့လခဲ့လည်း ကိစ္စတော့ သိပ်မရှိပါဘူး။ Programming ကို တတ်ကျွမ်းထားရင် လေ့လာနိုင်ပါလိမ့်မယ်။

iPhone Development လုပ်ဖို့အတွက် Mac OSX လိုအပ်ပါတယ်။ Intel CPU Mac တွေ လိုအပ်ပါတယ်။ ဒါကြောင့် Mac user မဟုတ်တဲ့သူတွေအတွက် Objetive C ကို လေ့လာလို့ ရမှာမဟုတ်ပါဘူး။ နောက်ပြီးတော့ Objective C ကို အဓိက ထားမှာ ဖြစ်တဲ့အတွက်ကြောင့် iPhone Development ကို ချက်ခြင်း ကူးမှာ မဟုတ်ပါဘူး။ Objective C အခြေခံမရှိပဲ iPhone Development ပိုင်းကို ကူးတဲ့အခါမှာ ပြဿနာတွေ ကြံုတတ်ပါတယ်။

Compile လုပ်ခြင်း

GCC က ကျွန်တော်တို့ စက်တွေထဲမှာ ရှိနေပြီးသား ဖြစ်တဲ့အတွက် သီးသန့် သွင်းနေစရာ မလိုတော့ပါဘူး။ တစ်ခါတည်း code တွေကို compile လုပ်လို့ရပါတယ်။ အခု အပိုင်းမှာတော့ C ကိုပဲ Mac မှာ ဘယ်လို compile လုပ်သလဲဆိုတာလေးကို အခြေခံအနေနဲ့ ရေးသားမှာပါ။ Application -&gt; Terminal ကို ဖွင့်ပြီး Terminal ကနေ ကျွန်တော်တို့ gcc ကို compile လုပ်ရပါတယ်။

[lang name=shell]$gcc inputfile.m -o outputfile[/c]

အဲလို မျိုး compile လုပ်ပြီးသား program ကို run ဖို့အတွက်ကတော့

[lang name=shell]$./outputfile[/c]

ဆိုပြီး run လိုက်လို့ရပါတယ်။

The Basics

ကဲ … ကျွန်တော်တို့တွေ ဥပမာလေး တစ်ခုလောက် စမ်းရအောင်။ Desktop ပေါ်မှာ Test ဆိုတဲ့ Folder လေး ဆောက်လိုက်ပါ။ Texteditor မှာ C code ကို အောက်ပါ အတိုင်း ရိုက်နိုင်ပါတယ်။

#include &lt;stdio.h&gt;
int main(){
printf("Hello World\n");
return 0;
}

ပြီးတဲ့ အခါမှာ Test ဆိုတဲ့ Folder ထဲမှာ program1.m နာမည်နဲ့ သိမ်းလိုက်ပါ။ Terminal ကို ဖွင့်ပြီး

$cd ~/Desktop/Test
$gcc program1.m -o program1
$./program1

အဲဒါဆို compile လုပ်ပြီးသား program ကို run လိုက်တဲ့အခါမှာတော့ Hello World ဆိုတဲ့ စာလေးထွက်လာပါလိမ့်မယ်။ code လေးကတော့ ရှင်းရှင်းလေးပါပဲ။ computer တက္ကသိုလ် first year ပြီးထားတဲ့သူတိုင်း သိတဲ့ code လေးပါ။ printf နဲ့ ထုတ်ပြီး \n ကတော့ တစ်ကြောင်းဆင်းထားလိုက်တာပါ။

Variable

Variable ကတော့ data တွေကို memory ပေါ်မှာ သိမ်းဖို့အတွက်ပါ။ Variable တွေမှာ variable type တွေ ရှိပါတယ်။ ဒါတွေကတော့ programming အခြေခံတတ်ထားပြီးသားသူတွေအတွက် သိပြီးသားလို့ ထင်ပါတယ်။ variable type တွေကတော့

  • int – integer နံပတ်တွေကို သိမ်းဖို့အတွက်ပါ။
  • char – character တွေကို သိမ်းဖို့အတွက်ပေါ့။
  • float – ဒဿမ ကိန်းတွေအတွက်ပါ။
  • double – ဒဿမ ကိန်းတွေအတွက်ပါပဲ။ ဒါပေမယ့် သူက float ထက် ပိုပြီး အရေအတွက်များပါတယ်။

variable ကို ဘာလို့ အသုံးပြုရသလဲဆိုတော့

1+10 = 11

ဖြစ်ပါမယ်။ အမြဲ ပုံသေ မဟုတ်ချင်တဲ့အခါမှာတော့ variable ကို အသုံးပြုပါတယ်။

1+i= ?

အဲဒါဆိုရင် နံပတ်တွေက အမျိုးမျိုး ဖြစ်နိုင်တယ်ပေါ့။ variable ထဲမှာ ထည့်ထားတဲ့ နံပတ်ပေါ်မှာ အခြေခံပြီးတော့ အဖြေလည်း ပြောင်းသွားပါလိမ့်မယ်။ ဟုတ်ပြီ။ အပေါ်က c code လေး ကို အောက်ကလို နည်းနည်းထပ်ပြောင်းပါမယ်။

#include &lt;stdio.h&gt;
int main(){
int someNumber = 123;
printf("My number is %i \n", someNumber);
return 0;
}

အဲဒါကို run လိုက်ရင် 123 ဆိုပြီး ဖြစ်သွားပါလိမ့်မယ်။ printf ကို သုံးတဲ့အခါမှာ variable ပေါ်မယ့် နေရာတွေကို ဘာ variable ဆိုပြီး data type ပေါ်မူတည်ပြီး text လေးထည့်ပေးရပါတယ်။ အခု ဥပမာမှာ %i ကို ထည့်ထားတာ တွေ့ပါလိမ့်မယ်။ အဲဒါက someNumber က int ဖြစ်နေလို့ပါ။ အခြားဟာတွေအတွက် အောက်မှာ ကြည့်နိုင်ပါတယ်။

  • %i – integer အတွက်
  • %f – float အတွက်
  • %e – double အတွက်
  • %c – char အတွက်

ဒါတွေက အရေးကြီးပါတယ်။ C မှာ သာမဟုတ် နောက်ပိုင်း Objective C ကို ရေးသားရာမှာလည်း အသုံးများလာပါလိမ့်မယ်။ အဲဒီအထဲမှာ character က string အတွက် အသုံးပြုမယ်ဆိုရင် အခန်းတွေ အများကြီးနဲ့ တွဲပြီး အသုံးပြုရပါတယ်။ ဥပမာ။။ Hello World ဆိုတဲ့ စာလုံး ၁၁ လုံး မှာဆိုရင် chr[0] က H ပေါ့။ အဲလိုမျိုး 0 ကနေ စပြီး 10 အထိ အခန်းပုံစံတွေနဲ့ အသုံးပြုရပါတယ်။

Conditionals

လောကမှာ အရာအားလုံးက တဆင့်ပြီး တဆင့်ဖြစ်နေတာ ရှိနေသလို အချို့နေရာတွေမှာကတော့ ဒါဖြစ်ရင်ဒါလုပ် မဖြစ်ခဲ့ရင် ဒါလုပ် ဆိုတဲ့ Conditional တွေ ရှိပါတယ်။ Programming မှာလည်း ရှိပါတယ်။ အဲဒီအခါမှာ programming မှာ if နဲ့ အသုံးပြုပါတယ်။ code ကတော့ အောက်မှာ ဥပမာ ပေးထားပါတယ်။

#include &lt;stdio.h&gt;
int main()
{
if(1 == 1) { // This is always true

// Do some stuff here

}

return 0;
}

1 နဲ့ 1 သာ တူခဲ့ရင် true ဖြစ်ပြီး အောက်က { နဲ့ စပြီး } ပိတ်ထားတဲ့ ကြားက code တွေကို အလုပ်လုပ်မှာပါ။ မဖြစ်ခဲ့ရင် condition အတွက်တော့ else ဆိုတာကို အသုံးပြုနိုင်ပါတယ်။ // နဲ့ ရေးထားတာတွေက comment ပါ။

int main(){

if(1==1){

// Do some stuff here.

}

else{

// The universe is broken!

}

return 0;

}

ကျွန်တော်တို့တွေ အဲဒီ 1==1 ဆိုတဲ့ နေရာတွေမှာ variable တွေထားပြီး စစ်နိုင်ပါတယ်။ i==1 ဖြစ်လားဆိုသလိုမျိုးပေါ့

Loop

ကြိမ်ဖန်များစွာ ထပ်ခါ ထပ်ခါ လုပ်နေရင် Loop လုပ်တယ်လို့ ခေါ်ပါတယ်။ Looping အတွက် ကျွန်တော်တို့တွေ for , while , do တွေကို အသုံးပြုကြပါတယ်။

// if loop

int main () {

int i = 9;

int x = 0;

for (x = 0; x &amp;lt; i; x++){

printf("Count is: %i\n", x);

}

return 0;

}

အဲဒါလေးကတော့ for loop ပေါ့။ x က 0 ကနေ စပြီးတော့ i ထက် ငယ်တဲ့အထိပေါ့။ i က 9 ဖြစ်တဲ့အတွက်ကြောင့် 0 ကနေ 8 အထိ အလုပ်လုပ်ပါမယ်။ အဲဒီတော့ Count is 0 ကနေ Count is 8 ထိကို ဖော်ပြပေးပါလိမ့်မယ်။

// while loop

int main () {

int x = 0;

while (x &lt; 10){

printf("Count is: %i\n", x); //Watch OUT! Something is missing.

}

return 0;

}

ဒါကတော့ while loop ပေါ့။ သူကတော့ variable တစ်ခုထဲပါပဲ။ x ကို 0 လို့ သတ်မှတ်ထားတယ်။ 10 ထက် ငယ်နေသ၍ အလုပ်လုပ်မယ်လို့ ဆိုထားတာပါ။ ဒါပေမယ့် အဲဒီ code ကို run ရင် ပြီးတော့မှာ မဟုတ်ပါဘူး။ ဘာကြောင့်လဲဆိုတော့ x တန်ဖိုး မပြောင်းလဲသွားတဲ့အတွက်ကြောင့်ပါ။ for loop မှာတုန်းက x++ ဆိုပြီး x တန်ဖိုးကို ၁ တိုးတိုး သွားပါတယ်။ while loop မှာလည်း အဲလို တန်ဖိုး တိုးပေးဖို့လိုပါတယ်။ အဲဒါကြောင့် အောက်ကလို နည်းနည်းပြင်လိုက်ပါတယ်။

// while loop
int main () {
int x = 0;
while (x &lt; 10){
x++;
printf("Count is: %i\n", x);
}

return 0;
}

အဲဒီအခါ x ကို ၁ တိုးတိုးသွားတဲ့အတွက် ၁၀ ရောက်တာနဲ့ ၁၀ ထက် မငယ်တော့တာကြောင့် loop က ထွက်သွားပါလိမ့်မယ်။ do loop က လည်း while loop နဲ့ အတူတူပါပဲ။ မတူတာကတော့ condition ကို အောက်မှာ စစ်တာပါပဲ။ while loop က process မစခင် စစ်ပေမယ့် do loop က process ကို အနည်းဆုံး ၁ ခေါက်လုပ်ပြီးမှ condition ကို စစ်ပါတယ်။

// do loop

int main () {

int x = 0;

do {

x++;

printf("Count is: %i\n", x);

} while(x &lt; 10);

return 0;

}

Pointer

pointer က memory ပေါ်က address နံပတ်ကို မှတ်ထားတာပါ။ variable က value ကို မှတ်ပေမယ့် pointer က memory address ကို မှတ်ထားပြီး အဲဒီ memory address ကို value ကို လှမ်းယူတာပေါ့။ ဥပမာ။။ variable value က အမြဲ ပေါင်းနေပေမယ့် variable ရဲ့ address က တစ်ခုတည်းမှာပဲ value တွေ ပြောင်းပြောင်းသွားနေတာပါ။ ဒါကြောင့် address နံပတ်ကို လှမ်းခေါ်လိုက်ရင် variable မှာ ပြောင်းထားတဲ့ value ကို ရနိုင်ပါတယ်။

int foo = 123; // This is an integer variable

int *ptr = &amp;foo; // This is a pointer to an integer variable

ရှုပ်သွားလောက်ပြီထင်တယ်။ နောက်ပိုင်းမှာ Objective-C လေ့လာရင်း pointer အသုံးပြုပုံတွေ တွေ့လာမှာပါ။ အဲဒီ အခါ ထပ်ရှင်းပြတာပေါ့။

အဆုံးသတ်ခြင်း

ဒီနေ့မှာတော့ Objective-C မစခင် C ကို ပြန်နွှေပေးတာပါ။ လွယ်လွယ်လေးနဲ့ ပြန်မှတ်မိအောင်ပေါ့။ အချို့တွေကလည်း C ကို အသုံးမပြုတာကြာပြီဆိုတော့ မေ့သွားလောက်ပြီ။ ဒါကြောင့် Objective-C မစခင် ပြန်ပြီး နွှေးပေးတဲ့ သဘောပါ။ နောက်နေ့မှာ Objective-C အကြောင်း Intro လေး စပါမယ်။

Reference : http://mobile.tutsplus.com/tutorials/iphone/learn-objective-c-day-1/

iPhone Development Intro – 2

အပိုင်း ၁ မှာ တုန်းက iPhone Development တွေ လိုအပ်တာတွေပြင်ဆင်ဖို့ ဘယ်လို လေ့လာရမလဲဆိုတာတွေ ပြောပြီးပါပြီ။ အခု အပိုင်းမှာတော့ iPhone Developer Account နဲ့ Distrubtion အကြောင်းလေး ရေးပါမယ်။

Why you need Developer Account

ကျွန်တော်တို့မှာ Simulator ရှိပါတယ်။ သို့ပေမယ့်လည်း Simulator Account နဲ့ အကုန်လုပ်လို့မရဘူး။ camera, phone, accelerometer, magnetometer or gyroscope စတာတွေကို Simulator နဲ့ စမ်းလို့မရပါဘူး။ Developer Account ရှိမှ အဲဒီ API တွေကို Device ပေါ်မှာ တင်ပြီး စမ်းလို့ရမှာပါ။ နောက်ပြီး App store မှာ တင်ပြီးတော့ ရောင်းချင်တယ်ဆိုရင်လည်း Developer Account လိုအပ်ပါတယ်။ ဝယ်မယ်ဆိုရင်တော့ အရင်ဆုံး Apple Store or iTune store Account ရှိဖို့ လိုပါတယ်။ အဲဒီ Account ရှိမှ Developer Account ကို ဝယ်လို့ရမှာပါ။

dev center

Testing Your Project

Project ကို စမ်းမယ်ဆိုရင် Device ပေါ်မှာ စမ်းသပ်တာက အကောင်းဆုံးပါပဲ။ iPodTouch Simulator မှာသုံးတဲ့ Speed နဲ့ iPhone Device မှာ ရတဲ့ Speed က မတူပါဘူး။ နောက်ပြီး အချို့ API တွေ ဖြစ်တဲ့ camera, accelerometer စတာတွေက  Simulator နဲ့ စမ်းလို့မရဘူး။ Device ပေါ်မှာ စမ်းဖို့အတွက် Developer Account ရဲ့ Provisioning Portal ကနေ Development Provisioning Profiles တစ်ခုကို Download ချပြီး ဖန်တီးဖို့ လိုပါတယ်။ နောက်ပြီး သင့် Application အတွက် App ID တစ်ခုလည်း တည်ဆောက်ဖို့လိုတယ်။ အဲဒီအဆင့်တွေက Developer Account ဝယ်ပြီးသွားရင် Provisioning Portal မှာ အဆင့်ဆင့်တွေ ပြထားပါတယ်။ iPhone Development လုပ်နေပြီဆိုကတည်းက English စာ အသင့်သင့် ရှိနေတဲ့ သူတစ်ယောက်ဖြစ်တဲ့အတွက် English စာဖတ်ရတာ ခက်ခဲမယ် မထင်ပါဘူး။ အဆင့်ဆင့်တွေ ဖြစ်တဲ့ အတွက် Provision Portal မှာ စာတွေ အသေးစိတ် ဖတ်ဖို့ လိုအပ်ပါတယ်။

sdk

Simulator က iPhone Device ထက်မြန်တယ်လို့ ကျွန်တော် ပြောပြီးပါပြီ။ အဲဒါကြောင့် Device မှာသာ သုံးလို့ရတဲ့ API မသုံးပဲ ရေးမယ်ဆိုရင် Simulator ကို အဓိက ထားသုံးသင့်ပါတယ်။ Device ကို နောက်ဆုံး Testing အဆင့်အတွက် အဓိက ထားသုံးသင့်ပါတယ်။ Device မှာ မဟမ်းသွားဖို့လိုပါတယ်။

Distrbution

Distrubtion လုပ်မယ်ဆိုရင် ၂ နည်းရှိပါတယ်။ Ad Hoc နဲ့ App Store ပိုင်းပါ။ Ad Hoc ဆိုတာကတော့ App Store မှာ မတင်ပဲသီးသန့် ခွင့်ပြုထားတဲ့ device တွေမှာ အသုံးပြုဖို့အတွက်ပါ။ Ad Hoc က ကြိုက်သလောက် ဖန်တီးခွင့် မရှိပါဘူး။ စုစုပေါင်း Device ID 99 ခုပဲရပါတယ်။ နောက်တနည်းကတော့ App Store ပါ။

distrubtion

App Store

iPhone Project တွေ မတင်ခင် developer account မဝယ်ခင် App store နဲ့ ပတ်သက်ပြီး သိသင့်တာလေးတွေ ရှိပါတယ်။ App Store မှာ ရောင်းမယ်ဆိုရင် ရောင်းစျေးထက် 70% ပဲရပါလိမ့်မယ်။ ဥပမာ ။။ $0.99 နဲ့ ရောင်းတဲ့ app အတွက် ၁ ခု ရောင်းရလျှင် 0.70 ပဲ ကိုယ်က ရမှာပါ။ App Store ကို အသုံးပြုမယ်ဆိုရင် Online Bank Account ရှိဖို့လိုပါတယ်။ Bank Account က Swift Account ရှိဖို့လိုပါတယ်။ စကာင်္ပူမှာတော့ POSB, DBS , Ctibank တို့က Swift ရှိပါတယ်။ Address ကို သတိထားရပါမယ်။ Address ပြောင်းချင်ရင် Bank မှ လာထားတဲ့ Phone Bill နဲ့ ကိုယ်နေထိုင်တဲ့ နိုင်ငံရဲ့ ID card ပြနိုင်ဖို့ လိုပါတယ်။ Address ပြောင်းခြင်းကလည်း ၁ ပတ်လောက် ကြာမြင့်နိုင်ပါတယ်။ အကုန်လုံး သေချာသွားပြီဆိုရင် Contract စတင် ချုပ်လို့ရပါပြီ။ Contract ချုပ်ပြီးတာနဲ့ ကိုယ့် Bank Account ကို စတင်ဖြည့်လို့ရပါပြီ။ လိုအပ်တဲ့ Information တွေ ဖြည့်ပေးဖို့လိုပါတယ်။ Free version အတွက် bank account တွေ မလိုအပ်ပါဘူး။

app store

Sale on App Store

App store ပေါ်တင်မယ်ဆိုရင် ကိုယ့် App ကို ပုံမှန်အားဖြင့် ရ ရက် စောင့်ရပါတယ်။ ရ ရက်အတွင်းမှာ 95% Application တွေက Approve ဖြစ်ပါတယ်။ ဘာလို့ 5% က Approve မဖြစ်သလဲဆိုတော့

  • မပြည့်စုံခြင်း။ ( လိုအပ်ချက်တွေ မပြည့်စုံလို့ပါ။ Description မပြည့်စုံခြင်း။ Application က ဘာမှ မရှိပဲ နည်းနည်းလေး ပါးပါး စမ်းသပ်ထားသလို ဖြစ်နေခြင်း စတာတွေ ကြောင့်ပါ )
  • Custom API သုံးထားခြင်း။ ( App ထဲမှာ Custom API တွေ ထည့်သွင်းသုံးထားတာကို Apple က ခွင့်မပြုပါဘူး )
  • Crash ဖြစ်ခြင်း။ ( App က crash ဖြစ်တာကိုတွေ့ရင် လက်မခံပါဘူး )

approve

တကယ်လို့ ကိုယ့် App က approve မဖြစ်လို့ ပြန်ပြင်ပြီး resubmit လုပ်လို့ရပါတယ်။ App တစ်ခုကို တင်ရင် လိုအပ်တာတွေက

require

ရောင်းဖို့အတွက် စျေးနှုန်းတွေကို Tier နဲ့ သတ်မှတ်ပါတယ်။ ပုံမှန်အားဖြင့် အနိမ့်ဆုံး Tier 1 ဖြစ်တဲ့ $0.99 ကနေ စရောင်းလို့ရပြီးတော့ အမြင့်ဆုံး ဖြစ်တဲ့ Tier 85 ဖြစ်တဲ့ $999.99 ထိ ရောင်းလို့ရပါတယ်။ စာရင်းကိုတော့ ဒီမှာ ကြည့်လို့ရပါတယ်။ နောက်တချက် သိဖို့က ရောင်းတဲ့အခါမှာ $150 ပြန်မရမခြင်း သင့် ပိုက်ဆံ ပြန်ထုတ်လို့မရပါဘူး။ iAds လည်း ထိုနည်းတူပါပဲ။ ဒါကြောင့် သင့် Appliation ကို ရောင်းကောင်းအောင် Marketing တွေ လုပ်ဖို့လိုပါတယ်။

Marketing Your Application

App store မှာ တင်ပြီးသွားရင် ကိုယ့် Application Marketing အတွက် ဘယ်လောက်ရောင်းရတယ် ဘယ်လောက် Update လုပ်လဲ စတဲ့ report တွေကို ကြည့်လို့ရပါတယ်။ နောက်ပြီး Finance Reports ကို ၁ လ ၁ ကြိမ် ကြည့်လို့ရပါတယ်။ ဒါပေမယ့် real time report ကတော့ ကြည့်လို့မရပါဘူး။ ဒီနေ့ တနေ့လုံး ဘယ်လောက် ရောင်းရလဲဆိုတာကိုပဲ ကြည့်ုလို့ရပါတယ်။ ဒီနေ့ ၁ နေ့လုံးဆိုတာကလည်း ပုံမှန်အားဖြင့် ည singapore ည ရ နာရီ မှ တစ်ခါ update ဖြစ်ပါတယ်။ weekly report အတွက် ရ ရက်စောင့်ရပါမယ်။ နောက်ပြီးတော့ Discount Period တွေ သတ်မှတ်လို့ရပါတယ်။ ဘယ်အချိန်မှာ ဘယ်စျေးပြောင်းဆိုပြီး သတ်မှတ်လို့ရပါတယ်။ Available on App Store ဆိုတဲ့ Image ကို အသုံးပြုချင်တယ်ဆိုရင်တော့ US ကို mail ပို့ပြီး ကိုယ် သုံးမယ့် app နဲ့ website address အတွက် ခွင့်ပြုချက်ရယူဖို့ လိုပါတယ်။

ကဲ… ဒီလောက်ဆိုရင် iPhone Application Development အကြောင်းကို ခြံုငုံပြီး သိသွားပြီလို့ထင်ပါတယ်။

iPhone Development Intro – 1

iPhone application တစ်ခု ရေးသားဖို့ရာ နည်းလမ်း ၂ ခု ရှိပါတယ်။ HTML5 Web Application နဲ့ iPhone Application တို့ပါပဲ။ HTML5 Web application ဆိုတာက သမာရိုးကျ website ကို iPhone Safari နဲ့ အဆင်ပြေအောင် ပြောင်းလဲရေးသားရတာပါ။ HTML5 ဖြစ်တဲ့အတွက်ကြောင့် Video တွေ Sound တွေ ထည့်သွင်းလာနိုင်ပါတယ်။ အဲဒီလိုမျိုး HTML5 တွေကို စမ်းသပ်ချင်တယ်ဆိုရင်တော့ http://www.apple.com/html5 မှာ လေ့လာနိုင်ပါတယ်။ ပုံမှန် Web Development နဲ့ အတူတူပါပဲ။ ဘာမှ ကွာခြားမှုမရှိပါဘူး။ ထူးခြားတာကတော့ safari webkit css တွေ ခေါ်ယူသုံးစွဲလို့ရတာပါပဲ။

Continue reading “iPhone Development Intro – 1”