不使用NSValues的NSArray作为参数调用XPC方法

时间:2014-07-24 08:03:46

标签: objective-c macos xpc nsvalue nsxpcconnection

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

这个块需要3个NSStrings和一个NSArray,它们应该只包含NSValues。每个NSValue对象都拥有一个NSRect。

由于某种原因,当NSArray不为零时,不会调用给定的块。 如果不是保持NSValues而是让数组保存NSStrings,则正确调用该块。

我不确定如何处理这个,因为没有明显的理由发生这种情况。根据Apple文档,NSValue符合NSSecureCoding。

我甚至尝试将NSValue类列入白名单(这不应该是真的需要):

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

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

这似乎没有任何改变。

知道如何通过NSArray吗?我想我可以将所有NSRects格式化为NSStrings,并传递NSStrings数组,我知道这些数据有效,但这会导致性能下降,我宁愿避免。

0 个答案:

没有答案