about bank

วันอังคาร, ธันวาคม 21, 2547

ทดลองเรียก Object บน Objective-C ครับ

วันนี้ลองทำ Object ที่ง่ายๆ ขึ้นมาเป็นตัวอย่างที่ไม่ค่อยดีเท่าไหร แต่ไว้วันต่อไปค่อยทำตัวอย่างให้ดูละกันว่าแบบนี้มันไม่ดียังไง และในกรณีไหนที่ทำให้ object แบบนี้เกิดความผิดพลาด

เริ่มต้นจากการสร้าง Object ที่จะนำไปใช้ก่อน

// DataDic.h


#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>

@interface DataDic : NSObject {
NSString *_name;
}

- (void) setName:(NSString *)newName;
- (NSString *) name;

@end


เป็น object ง่ายๆ มี name เอาไว้เก็บ String และทำตัวเหมือน private ใน java

// DataDic.m

#import "DataDic.h"

@implementation DataDic

- (void)
setName:(NSString *)newName {
_name = newName;
}

- (NSString *) name {
return _name;
}

@end


ท่อน implement ง่ายกว่า interface :)


#import <Foundation/Foundation.h>
#import <DataDic.h>

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

//work well
NSString *str;

str = @"DoubleA";
DataDic *dd = [DataDic new];
[dd setName:str];

str = @"DoubleB";
DataDic *dd2 = [DataDic new];
[dd2 setName:str];

NSLog(@"dd is %@",[dd name]);
NSLog(@"dd2 is %@",[dd2 name]);

//work with array
NSMutableArray *myArray = [[NSMutableArray alloc] init];

DataDic *dd3;

dd3 = [DataDic new];
[dd3 setName:@"DoubleA"];
[myArray addObject:dd3];

dd3 = [DataDic new];
[dd3 setName:@"DoubleB"];
[myArray addObject:dd3];

DataDic *wd = [myArray objectAtIndex:0];
NSLog(@"wd equal %@", [wd name]);

DataDic *wd2 = [myArray objectAtIndex:1];
NSLog(@"wd2 equal %@", [wd2 name]);

return 0;
}


ตัว main แบ่งออกเป็นสองท่อน ท่อนบน เป็นการนำไปใช้แบบธรรมดา ก็สามารถใช้ได้ไม่มีปัญหา แม้ว่าตัวแปลที่เอามาใส่จะเป็นตัวเดียวกันก็ไม่ทำให้ค่าเปลี่ยนไป

ในท่อนที่สองเราใช้ Array ครับ แล้วก็ใช้ DataDic ตัวเดียวกันในการสร้าง Object ใส่ลงใน Array

0 ความคิดเห็น:

แสดงความคิดเห็น

สมัครสมาชิก ส่งความคิดเห็น [Atom]



<< หน้าแรก