HƯỚNG DẪN CÁCH SỬ DỤNG BLOCK TRONG OBJECTIVE C 1/ Sơ lược Objective C: Như biết biến lưu giá trị, đối tượng có bao gồm thuộc tính, phương thức… Tuyệt vời! Block hỗ trợ lưu đoạn code sử dụng, tương tác nhiều lần Bài giúp bạn tìm hiểu Objective C: Khai báo block Định nghĩa block Truy vấn block, tính chất block ứng dụng block =>ok bắt đầu nào!!! khởi tạo dự án mới: ta việc file ViewController.m trong: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a } o Đầu tiên Cách khai báo block: Một block khai báo tổng quát: kiểu liệu trả (^tên block)(kiểu liệu 1,kiểu liệu 2,kiểu liệu 3); +) Đơn giản block tham số truyền vào : Kiểu trả “void”, tên block “_in”, không tham số truyền vào “( )” void (^_in)(); +) block tham số: Kiểu trả “int”, tên block “myBlock”, tham số truyền vào “( int)” int (^myBlock)(int); +) block nhiều tham số truyền vào: Kiểu trả “void”, tên block “myBlock”, tham số truyền vào “( int,int)” //block nhiều tham số void (^inSo)(int,int);//khai báo o Định nghĩa block Định nghĩa block tổng quát: blockX=^(tham số1, tham số2 , tham số3){mã code}; ví dụ: Ta định nghĩa block khai báo bên trên: block _in : đơn giản ta log chuỗi _in=^(){ NSLog(@"infor"); }; block myBlock: truyền vào tham số “num”, log thông tin “num”, trả giá trị num myBlock= ^(int num){//định nghĩa NSLog(@"%d",num); return num; }; block inSo: truyền vào tham số “soA” “soB”, tính tổng log giá trị tổng inSo=^(int soA,int SoB){//định nghĩa int tong=soA+SoB; NSLog(@"%d",tong); }; o Truy vấn block, tính chất block Truy vấn tổng quát: tên block(tham số 1, tham số 2, tham sô3)l; ví dụ truy vấn ví dụ trên: block _in : _in() kết quả: infor block myBlock: myBlock(7); kết quả: block inSo: inSo(6,4); kết quả:10 Thêm đoạn mã sau: int i=100; //lấy giá trị biến bên hàm!!! void (^inI)()=^(){ NSLog(@"%d",i); }; inI(); block không truyền tham số biến i vào ta sử dụng biến i !!! Tính chất tuyệt vời block custom (block lấy biến địa phương trước khai báo đó) chạy cho kết quả: 100 int i=100; //lấy giá trị biến bên hàm!!! void (^inI)()=^(){ NSLog(@"%d",i); }; inI(); i=200 ; inI(); gán lại giá trị biến i=200 gọi block kết trả :100 block tham chiếu giá trị k tham chiếu ô nhớ o ứng dụng block: Các bạn làm quen với block cách khai báo, định nghĩa , truy vấn Ở đưa ví dụ cách áp dụng block : Mình có ví dụ này: -(int) addInfor: (int)intX{ intX=6; NSLog(@"so:%ld",(long)intX); return intX; } gọi hàm: int soA; [self addInfor:[self addInfor:soA]]; hàm trả : so:6 Tính chất lưu lại giá trị hàm lưu giá trị kiểu liệu trả ,trên block ứng dụng nhiều lưu trữ nhiều kiểu giá trị khác nhau! Cách truyền block vào hàm: Tổng quát: –(void) tên hàm :(kiểu liệu)tên biến1 : (kiểu liệu)tên biến2 :block –(void) tên hàm :(kiểu liệu)tên biến1 : (kiểu liệu)tên biến2 : (kiểu trả block (^)(kiểu liệu A ,kiểu liệu B)) Tên block; Ví dụ : -(void) add:(NSString*)name :(int)age :(void (^)(NSInteger diem,NSString *monHoc,NSError *error))completion{ completion(3,@"hoa",nil);// truyền tham số cho block name=@"minh"; age=8; } tham số block lưu lại thông tin truyền vào block Thêm đoạn mã sau viewDidLoad: Đây đoạn code mã nguồn cho block: // ứng dụng block [self add:@"binh" :22 :^(NSInteger diem, NSString *monHoc, NSError *error) { NSLog(@"%@,%ld",monHoc,(long)diem); }]; => Khi tham số block lưu lại thông tin! Ta gọi tham số làm việc !!! Ở ví dụ đơn giản, thực tế ta khai báo block để lưu lại thông tin tham số dùng tham số định nghĩa lại block để làm việc với tham số! Ví dụ load API truyện ta cần lưu lại thông tin số sách, tên sách… định nghĩa block gồm thông tin Khi hàm ta gọi block trên, định nghĩa nghĩa block tuỳ mục đích sử dụng với thông tin block cung cấp link full code http://www.mediafire.com/download/cgkgo8otu5imss6/blockCoBan.zip