Saturday, July 5, 2014

Ví dụ @Property Xcode

@property: sinh ra phương thức set/get trong interface

@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