Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Cơ chế truyền delegate trong Objective C như thế nào ???

  1. #1
    Ngày gia nhập
    10 2008
    Nơi ở
    sài gòn
    Bài viết
    422

    Mặc định Cơ chế truyền delegate trong Objective C như thế nào ???

    mình đọc code một số chưong trình iphone miễn phí trên mạng thấy có cách gọi delegate như sau:
    Objective C Code:
    1.  if([[(NSDictionary*)infoArray objectForKey:@"bild"] length] >0){
    2.         [Delegate jmpTo:@"card" name:@"a..c" thePara:infoArray];
    3.     } else {
    4.         [Delegate jmpTo:@"wimmel" name:@"a..c" thePara:infoArray];
    5.     }

    không rõ ai có thể giúp mình phác thảo 1 cách đơn giản việc tạo delegate và bắt chúng trong Objective C ??
    cố gắng

  2. #2
    Ngày gia nhập
    10 2010
    Nơi ở
    Hồ Chí Minh
    Bài viết
    49

    Theo mình hiểu thì delegate trong Objective-C dùng để gọi 1 phương thức nằm trong 1 class khác hoàn toàn với class hiện tại.
    Ví dụ trong class B có phương thức
    Objective C Code:
    1. //ClassB.m
    2. -(void)add:(int) a and: (int)b
    3. {
    4. a = a+b;
    5. }
    1 Class A không là subclass của B nhưng muốn gọi phuơng thức add:and: ở trong B.

    Ta thực hiện như sau:
    - định nghĩa 1 protocol chứa method add:
    Objective C Code:
    1. //ClassA.h
    2. @protocol ClassADelegate
    3. -(int) add:(int) a and:(int) b;
    4. @end
    -khai báo 1 property kiểu id<ClassADelegate> cũng trong ClassA.h:
    Code:
    @property (nonatomic, assign) id<ClassADelegate> delegate;
    -khai báo class B thực thi protocol ClassADelegate và tất nhiên phải implement method add:and: của protocol ClassADelegate trong ClassB.m:
    Objective C Code:
    1. //ClassB.h
    2. @interface ClassB: NSObject<ClassADelegate>
    3. {
    4. ...
    5. }
    6. ...
    7. @end
    - sử dụng delegate để gọi method add
    Objective C Code:
    1. //ClassA.m
    2. if (self.delegate && [self.delegate respondsToSelector:@selector(add:and:)]) // kiểm tra có tồn tại delegate và có responde tới method add:and: không
    3. {
    4. [self.delegate add:x and:y] // x,y là 2 biến kiểu int
    5. }

    Thực chất vấn đề là thông qua protocol (giống interface của java) để "liên lạc" giữa 2 class.
    ClassB có thể khai báo là kế thừa từ nhiều protocol...
    Mình biết nhiêu đó, có gì sai sót mong các pro bỏ quá cho ^^
    Đã được chỉnh sửa lần cuối bởi Noob_ : 12-09-2013 lúc 03:08 PM.

Các đề tài tương tự

  1. Code trong objective c có chạy được trong c++ không
    Gửi bởi hoathuongphuoc trong diễn đàn Thắc mắc lập trình Objective-C
    Trả lời: 3
    Bài viết cuối: 24-10-2013, 10:20 AM
  2. Giải thích đối truyền vào hàm trong Objective C
    Gửi bởi thanhtung_bk52 trong diễn đàn Thắc mắc lập trình Objective-C
    Trả lời: 2
    Bài viết cuối: 21-10-2013, 03:09 PM
  3. Cách truyền delegate trong objective C như thế nào?
    Gửi bởi haian trong diễn đàn Thắc mắc lập trình Objective-C
    Trả lời: 1
    Bài viết cuối: 18-10-2012, 09:05 PM
  4. Dùng delegate để truyền dữ liệu giữa 2 form C++.NET?
    Gửi bởi MrPhuongDeE trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 01-11-2011, 10:42 AM
  5. C# truyền dữ liệu 2 Form dùng Delegate, xin trợ giúp.
    Gửi bởi qhhqnavy trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 12-07-2011, 10:03 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn