Learn Objective-C : Day 6

ဒီနေ့တော့ Day 6 ရောက်ပါပြီ။ ဒီနေ့က categories လို့ခေါ်တဲ့ cocoa Touch အကြောင်းပါ။ လက်ရှိ object တွေကို implement ထပ်လုပ်တဲ့အကြောင်းပေါ့။ အရင်တုန်းက ရေးခဲ့တဲ့ အပိုင်းတွေကတော့

Other Articles In This Series

Categories

Categories ဆိုတာ ဘာလဲ ? Objective-C tutorials တော်တော်များများမှာ categories ကို တွေ့နိုင်ပါတယ်။ အလွန်ပဲ အသုံးဝင်ပြီးတော့ code ကော သပ်သပ်ရပ်ရပ် ဖြစ်စေတယ်ဆိုလည်း မမှားပါဘူး။ အခုကျွန်တော်တို့တွေ မကြာခင် လေ့လာရတော့မှာပါ။ NSString function မှာ ကျွန်တော်တို့ ကိုယ်ပိုင် function တွေ ထည့်ချင်တဲ့ အခါတွေရှိပါတယ်။ ဥပမာ။။ a chatacters တွေကို 4 ပြောင်းလိုက်တဲ့ function မျိုးပေါ့။ ကျွန်တော်တို့တွေ NSString ကို subclass ရှိပြီး ကိုယ်တိုင် method ကိုယ့်ဘာသာကိုယ် ထည့်သွင်းနိုင်ပါတယ်။ subclass ပိုင်းကို ကျွန်တော်တို့တွေ car class ဆောက်တုန်းက တွေ့မြင်ဖူးမှာပါ။ subclass က တော်တော်ကောင်းမွန်ပါတယ်။ သို့ပေမယ့် categories က ပိုပြီး ပြည့်စုံကောင်းမွန်တယ်လို့ ဆိုလို့ရပါတယ်။

Categories က ကျွန်တော်တို့တွေကို methods အသစ်တွေကို ရှိနေတဲ့ class မှာ ထပ်ဖြည့်ထည့်ခွင့်ပေးထားပါတယ်။ ဥပမာ။။ 100 NSString Objects ကို သင့် app မှာ သုံးထားတယ်ဆိုပါဆို့။ reverstring function ကို extra method အနေနဲ့ ထည့်ချင်တယ်ဆိုရင်တော့ custom subclass ကို အသုံးပြုနိုင်ပါတယ်။ သို့ပေမယ့် Categories နဲ့ဆိုရင်တော့ ပိုပြီး ရိုးရှင်းပြီး လွယ်ကူတယ်လို့ ဆိုနိုင်ပါတယ်။ နောက်ပြီး ရှိနေဲ့ method တွေကိုလည်း overwrite လုပ်ပြီး အစားထိုးဖို့ကလည်း ဖြစ်နိုင်ပါတယ်။

Syntax

Categoreis ကို အောက်ပါ syntax နဲက အသုံးပြုပါတယ်။


@interface ClassNameHere (category)

// method declaration(s)

@end

//The implementation looks like this;

@implementation ClassNameHere (category)

// method implementation(s)

@end

ကဲ … ဥပမာလေးကို ကြည့်လိုက်ရင် ပိုရှင်းသွားမှာပါ။ အရင်ဆုံး ကျွန်တော်တို့တွေ interface ကို ဆောက်ပါမယ်။


@interface NSString (reverse)

-(NSString *) reverseString;

@end

ပြီးရင် implementation လုပ်ပါမယ်။

@implementation NSString (reverse)

-(NSString *)reverseString {

}

@end

အခုတော့ reverse string လုပ်ဖို့အတွက် code ရေးဖို့ပဲ ကျန်တော့ပါတယ်။ အဲဒါက အောက်ကလို ရေးလိုက်ပါတယ်။


int length = [self length];

NSMutableString *reversedString;

reversedString = [[NSMutableString alloc] initWithCapacity: length];

while (length > 0) {

[reversedString appendString:[NSString stringWithFormat:@"%C", [self characterAtIndex:--length]]];

}

return [reversedString autorelease];

method က အရမ်းကို ရိုးရှင်းပါတယ်။ looping ပတ်ပြီးတော့ chatracter တစ်လုံးခြင်းဆီကို နောက်ကနေ index ထောက်ပြီး reversedString ထဲကို ဖြည့်ဖြည့်သွားတာပါ။

Using Example

အခု example အပြည့်အစုံကို ကြည့်လိုက်ရအောင်။


@interface NSString (reverse)

-(NSString *) reverseString;

@end

@implementation NSString (reverse)

-(NSString *)reverseString {

int length = [self length];
NSMutableString *reversedString;

reversedString = [[NSMutableString alloc] initWithCapacity: length];

while (length > 0) {

[reversedString appendString:[NSString stringWithFormat:@"%C", [self characterAtIndex:--length]]];

}

return [reversedString autorelease];

}

@end

အခုက interface ကော implementation ကော file တစ်ခုထဲဖြစ်နေပါတယ်။ ကျွန်တော်တို့တွေ အနေနဲ့ကတော့ NSString+reverse.h (interface) and NSString+reverse.m (implementation) ဆိုပြီး ခွဲရေးလိုက်ပါတယ်။

ကျွန်တော်တို့ အသုံးပြုမဲ့နေရာက header မှာ အပေါ်က file ကို import လုပ်ပေးဖို့လိုက်တာနဲ့ အောက်ကလို အသုံးပြုနိုင်ပါပြီ။

NSString* testString = @"Just a test";

testString =[testString reverseString];

NSLog(@"Reversed: '%@'", testString);

ကဲ… အခုတော့ အဲဒီ code လေးကို စမ်းကြည့်လိုက်ပါ။ မရတာကို မေးနိုင်ပါတယ်။ နောက်ပြီးတော့ နားမလည်ရင်လည်း source code ကို download ချပြီး လေ့လာနိုင်ပါတယ်။

Series တစ်ခုလုံး ပြန်စုစည်းခြင်း

အခု Objective C အခြေခံ ပိုင်းတွေတော့ နားလည်သွားပါပြီ။ ကျွန်တော်တို့တွေ

  • Fundamentals of Programming
  • Fundamentals of OOP
  • Classes and Subclasses
  • Memory Management
  • Good Practice
  • Some Standard Naming Conventions

တွေကို လေ့လာခဲ့ပြီးပါပြီ။ မကြာခင်မှာပဲ ကျွန်တော်တို့တွေ ကိုယ်ပိုင် app လေး တစ်ခု ဆောက်ကြတာပေါ့။

Leave a Reply

Your email address will not be published. Required fields are marked *