2011-10-31 15 views

Trả lời

71

Sử dụng phương pháp addObserverForName:object:queue:usingBlock: HOẶC addObserver:selector:name:object: của NSNotificationCenter và chuyển số không cho tên và đối tượng.

Ví dụ

Các mã sau đây nên thực hiện công việc:

- (void)dumpNotifications { 
    NSNotificationCenter *notifyCenter = [NSNotificationCenter defaultCenter]; 
    [notifyCenter addObserverForName:nil 
           object:nil 
           queue:nil 
          usingBlock:^(NSNotification *notification){ 
          // Explore notification 
          NSLog(@"Notification found with:" 
            "\r\n  name:  %@" 
            "\r\n  object: %@" 
            "\r\n  userInfo: %@", 
            [notification name], 
            [notification object], 
            [notification userInfo]); 
          }]; 
} 

Documents

Dưới đây là các tài liệu trên addObserverForName:object:queue:usingBlock:. Cụ thể, hãy xem các thông số tênobj.

addObserverForName: đối tượng: hàng đợi: usingBlock:

Thêm một mục vào bảng công văn của receiver với một hàng đợi thông báo và một khối để thêm vào hàng đợi, và tiêu chuẩn bắt buộc: tên thông báo và người gửi.

- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block

thông số

tên

Tên của thông báo mà phải đăng ký người quan sát; rằng là, chỉ những thông báo có tên này được sử dụng để thêm khối vào hàng đợi hoạt động . Nếu bạn vượt qua số không, trung tâm thông báo không sử dụng tên của thông báo để quyết định có thêm khối vào hàng đợi hoạt động hay không.

obj

Đối tượng có thông báo nào bạn muốn thêm khối vào hàng đợi hoạt động. Nếu bạn vượt qua số không, trung tâm thông báo không sử dụng người gửi thông báo để quyết định có thêm khối vào hàng đợi hoạt động hay không.

đợi

Hàng đợi hoạt động mà khối nên được bổ sung. Nếu bạn vượt qua nil, khối sẽ chạy đồng bộ trên chuỗi đăng.

khối

Khối để được thực thi khi nhận được thông báo. Khối được sao chép bởi trung tâm thông báo và (bản sao) được giữ cho đến khi đăng ký người quan sát bị xóa.Khối mất một đối số:

thông báo

Các thông báo.

+1

Câu trả lời hay. Tuy nhiên, đối với bất kỳ ai có khả năng sao chép/dán giải pháp, có một vài loại. "notifyCenter" nên là một đối tượng, vì vậy nó phải là "* notifyCenter". Và tuyên bố NSLog thiếu biểu tượng '@' ngay từ đầu. – Keller

+0

@Keller - cảm ơn nhận xét. Tôi đã sửa đổi câu trả lời của tôi để bao gồm các bản sửa lỗi của bạn. – Sam

+7

Không sao cả. Trớ trêu thay, tôi chỉ nhận thấy tôi đã sai chính tả "lỗi chính tả" trong bình luận trước của tôi; – Keller

Các vấn đề liên quan