@synthesize: định nghĩa phương thức set/get vừa sinh ra bởi @property trong interface
Sử dụng @property và @synthesize để thay đổi một biến trong một class khác tương tự phương thức set/get
Set/get có thể tùy chỉnh thay đổi dễ dàng còn @property @synthesize thì không
Ví dụ dưới đây sẽ thay đổi giá trị của biến color trong Class: ClassProperty
Vd:
Tạo một single project
Chúng ta add một Class: ClassProperty với 2 file: ClassProperty.h và ClassProperty.m
Trong file ClassProperty.h ta khai báo một method là: khoiTaoMau
.h
#import <Foundation/Foundation.h>
@interface ClassProperty : NSObject{NSString * color;}
-(void)khoiTaoMau;
// tao mot property de thay doi mau
@property NSString * property_thayDoiMau;
// code tren tuong duoi voi code
/*
-(void)setproperty_thayDoiMau:(NSString*)color;
-(NSString *)getproperty_thayDoiMau;
*/
@end
Trong file ClassProperty.m thực hiện định nghĩa hàm khoiTaoMau
.m
-(void)khoiTaoMau{
color=@"Blues";// Xuat bien color de kiem tra gia tri ban dau NSLog(@"Khoi tao color ban dau%@",color);
}
// tao mot synthesize property_khoiTaoMau de thay doi bien color
@synthesize property_thayDoiMau = color;
// code tren tuong duong voi code
/*
-(void)setproperty_thayDoiMau:(NSString*)color{
property_thayDoiMau = color;
}
-(NSString *)getproperty_thayDoiMau{
return property_thayDoiMau;
}
*/
Trong ViewControler.m code trong viewdidLoad
Tất nhiên chúng ta sẽ import ClassProperty.h để thực hiện gọi phương thức khoiTaoMau trong Class ClassProperty
- (void)viewDidLoad
{
[super viewDidLoad];ClassProperty * thayDoiMau = [[ClassProperty alloc] init];// goi ham khoiTaoMau[thayDoiMau khoiTaoMau];
// thuc hien thay doi gia tri bien color thong qua property property_khoiTaoMauthayDoiMau.property_thayDoiMau =@"Red";
NSLog(@"Bien color sau khi thay doi %@",thayDoiMau.property_thayDoiMau);
}
Kết quả sẽ là Red vì biến color được thay đổi giá trị thông qua property_thayDoiMau
P/s: Để hiểu rõ hơn trong viewDidLoad ta cần thay đổi bỏ đi dòng code:
property_khoiTaoMauthayDoiMau.property_thayDoiMau =@"Red";
Khi đó NSLog sẽ xuất ra biến color với giá trị ban đầu vẫn là Blue
Qua ví dụ trên ta thấy được khả năng của việc sử dụng @property, @synthesize để truy xuất đến biến trong một class khác mà nó không kế thừa
No comments:
Post a Comment