ทดลองเรียก 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]
<< หน้าแรก