Objective c 未使用NSValues的NSArray作为参数调用XPC方法

Objective c 未使用NSValues的NSArray作为参数调用XPC方法,objective-c,macos,xpc,nsvalue,nsxpcconnection,Objective C,Macos,Xpc,Nsvalue,Nsxpcconnection,我有一个为OS-X编译的32位XPC服务。它的一个方法将一个参数作为参数,并在主进程上调用给定的块 此块包含3个NSString和一个NSArray,该NSArray应该只包含NSValue。每个NSValue对象都包含一个NSRect 由于某些原因,当NSArray不是nil时,不会调用给定的块。 如果我没有保留NSValues,而是让数组保留NSStrings,则块被正确调用 我不知道如何处理这个问题,因为没有明显的原因。根据苹果的文档,NSValue确实符合NSSecureCodeding

我有一个为OS-X编译的32位XPC服务。它的一个方法将一个参数作为参数,并在主进程上调用给定的块

此块包含3个NSString和一个NSArray,该NSArray应该只包含NSValue。每个NSValue对象都包含一个NSRect

由于某些原因,当NSArray不是nil时,不会调用给定的块。 如果我没有保留NSValues,而是让数组保留NSStrings,则块被正确调用

我不知道如何处理这个问题,因为没有明显的原因。根据苹果的文档,NSValue确实符合NSSecureCodeding

我甚至尝试使用以下方法将NSValue类列入白名单(实际上不需要这样做):

这似乎没有改变什么

知道怎么通过国家安全局吗?我想我可以将所有NSRects格式化为NSStrings,并传递一个NSStrings数组,我知道这是可行的,但这会导致性能下降,我宁愿避免

NSSet *readerSelectionClasses =
[NSSet setWithObjects:[NSArray class], [NSValue class], nil];

[newConnection.exportedInterface setClasses:readerSelectionClasses forSelector:@selector(MyMethod:WithReply:) argumentIndex:3 ofReply:YES];