Tôi đang sử dụng XPC ở một trong các ứng dụng của mình trên 10.8. Nó có các thiết lập tiêu chuẩn với các giao thức được xác định cho giao diện xuất khẩu và giao diện từ xa. Vấn đề tôi gặp phải là với một trong các phương pháp của tôi trên giao diện được xuất.XPC không đăng ký chính xác các lớp học cho bộ sưu tập
Tôi có một lớp mô hình, chỉ cần gọi nó là Foo
. Lớp này phù hợp với NSSecureCoding
, triển khai +supportsSecureCoding
và mã hóa/giải mã các thuộc tính bên trong một cách chính xác bằng cách sử dụng các phương pháp mã hóa an toàn. Khi truyền đối tượng này thông qua một phương thức trên giao diện xuất khẩu của tôi mà chỉ liên quan đến một cá thể duy nhất, nó hoạt động tốt.
Sự cố xảy ra khi tôi muốn chuyển một bộ sưu tập các đối tượng này hoặc NSArray
của các đối tượng Foo
. Dưới đây là một ví dụ về những gì các chữ ký trên giao diện xuất khẩu trông giống như:
- (void)grabSomethingWithCompletion:(void (^)(NSArray *foos))completion;
Và tôi đã whitelisted lớp Foo
, như đã nêu trong tài liệu hướng dẫn:
NSSet *classes = [NSSet setWithObject:Foo.class];
[exportedInterface setClasses:classes forSelector:@selector(grabSomethingWithCompletion:) argumentIndex:0 ofReply:YES];
Bây giờ điều này sẽ làm cho nó để mảng này có thể được sao chép một cách an toàn trên toàn bộ quá trình và giải mã ở phía bên kia. Thật không may điều này dường như không hoạt động như mong đợi.
Khi gọi phương thức trên giao thức xuất khẩu, tôi nhận được một ngoại lệ:
Cảnh báo: Exception bắt trong giải mã nhận được trả lời nhắn 'grabSomethingWithCompletion:', thả tin nhắn gửi đến và gọi khối thất bại.
Ngoại lệ: ngoại lệ khi giải mã lập luận 1 trong tổng số gọi: giá trị trả về: {v} trống mục tiêu: {@}? 0x0 (block) lập luận 1: {@} 0x0
Ngoại lệ: giá trị cho khóa ' NS.objects 'là lớp học bất ngờ ' Foo '. lớp cho phép là '{( NSNumber, NSArray, NSDictionary, NSString, NSDate, NSData)}'.
Điều này dường như thậm chí không đăng ký danh sách trắng mà tôi đã thực hiện trước đó. Có suy nghĩ gì không?
Trông như thể nó cũng cần phải làm 'NSPropertyListSerialization'. Dường như [bạn không đơn độc] (https://gist.github.com/AlanQuatermain/3209230) – CodaFi