2010-02-22 37 views
5

Tôi muốn tạo ra một đối tượng của NSNotification như nói:Cách tạo đối tượng NSNotification trong Objective-C?

NSNotification *obj=[[NSNotification alloc]init]; 

nhưng khi tôi tạo ra như thế này tôi nhận được một ngoại lệ là 'NSConcreteNotification init: không được phép. Tôi nên giải quyết vấn đề này như thế nào?

Trả lời

7

Từ các tài liệu NSNotification:

Bạn có thể tạo một đối tượng thông báo với các phương pháp lớp notificationWithName:object: hoặc notificationWithName:object:userInfo:. Tuy nhiên, bạn thường không tạo thông báo của riêng mình trực tiếp. Các phương pháp NSNotificationCenter postNotificationName:object:postNotificationName:object:userInfo: cho phép bạn đăng thuận tiện thông báo mà không cần tạo thông báo trước.

2

NSNotificationCenter có phương pháp thuận tiện để xây dựng và thông báo công văn:

[[NSNotificationCenter defaultCenter] 
       postNotificationName:XYYourNotification 
       object:@"someObject"]; 

Nếu bạn muốn sử dụng thông báo của riêng bạn, tạo ra các tên thông báo extern:

extern NSString* const XYYourNotification; 

và xác định các NSString thực tế * trong quá trình triển khai của bạn.
Nếu bạn sử dụng hằng số chuỗi cho tên thông báo của mình, mã của bạn ít bị lỗi chính tả hơn.

+1

Tôi nhận ra đây là câu trả lời cũ nhưng thay vì 'extern' bạn nên sử dụng' FOUNDATION_EXPORT' sẽ là 'extern' trong các tệp mục tiêu-C hoặc' extern "C" 'trong các dự án mục tiêu-C++ Sử dụng chúng. –

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