2012-07-31 23 views
10

Tôi đã làm rất nhiều nghiên cứu nhưng tôi không thể tìm thấy những gì tôi đang tìm kiếm: Hiện tại, cả Deployment TargetBase SDK của ứng dụng của tôi được đặt thành 10.8 và nó chạy hoàn hảo. Tôi có thể đăng thông báo chính xác lên Trung tâm thông báo mới của Mountain Lions!Cách tạo ứng dụng chạy trên Mac OS 10.6 và hỗ trợ NSUserNotificationCenter?

Để xây dựng một ứng dụng cũng chạy trong Mac OS 10.6, tôi đã đặt Mục tiêu triển khai thành 10.6 và xây dựng nó (as recommended in this thread). Thật không may, ứng dụng gặp sự cố trên 10.6 và báo cáo sự cố chi tiết rằng NSUserNotificationCenter không thể tìm thấy (Không xử lý phiên bản OS).

-

Vì vậy, những gì tôi chắc chắn phải làm, là để kiểm tra, cho dù lớp NSUserNotificationCenter tồn tại:

notificationCenterIsAvailable = (NSClassFromString(@"NSUserNotificationCenter")!=nil); 

và hoạt động dựa trên lá cờ boolean này.

Nhưng những gì về luật mà không thể được dựa trên lá cờ này, như:

  • giao diện ..: <NSUserNotificationCenterDelegate> {
  • hoặc kiểu tham chiếu đến Notification Center: NSUserNotificationCenter *center trong các thuộc tính lớp?

Suy nghĩ đầu tiên của tôi là tự động thay đổi tiêu đề lớp khi chạy, tức là thêm phương pháp và thuộc tính để xử lý Trung tâm thông báo dựa vào việc lớp học có tồn tại hay không, nhưng điều này có vẻ rất phức tạp?

Trả lời

3

Đó là các vấn đề về biên dịch và sẽ luôn ổn định khi SDK cơ sở là 10.8. Con trỏ center có thể giữ nguyên tại nil nếu NSUserNotificationCenter không tồn tại và do đó bạn có thể sử dụng cờ đó làm cờ để kiểm tra xem bạn có đang thực hiện thông báo hoặc không chạy mã sau khi thử nghiệm.

EDIT Trong thực tế, hãy để nó nil có nghĩa là bạn thậm chí không cần phải kiểm tra; chỉ cần gửi tin nhắn như bình thường và chúng sẽ bị bỏ qua nếu con trỏ là nil (đây là trừ khi việc tạo tin nhắn là tốn kém và bạn muốn lưu một số chu trình CPU).

+0

Vì vậy, ngay cả các phương thức ủy nhiệm như trung tâm 'userNotificationCenter: (NSUserNotificationCenter *) shouldPresentNotification:' và '(void) userNotificationCenter: (NSUserNotificationCenter *) center didActivateNotification:' đang bị xóa bởi trình biên dịch tự động? – Raffael

+0

@Raffael Không có mã nào còn lại, tuy nhiên chúng sẽ không được sử dụng. – trojanfoe

+0

Nó hoạt động, cảm ơn bạn! Vụ tai nạn gần đây phải có lý do khác. – Raffael

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