Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不一致的专用板访问_Ios_Objective C - Fatal编程技术网

Ios 不一致的专用板访问

Ios 不一致的专用板访问,ios,objective-c,Ios,Objective C,我正在一个应用程序(称为App1)中创建一个名为“创建:”的私有UIPasteboard(称为PasteBoard1),在第二个应用程序(称为App2)中创建另一个名为“创建:”的私有UIPasteBoardWithName:create:(称为PasteBoard2)的私有UIPasteboard。我可以从App2访问PasteBoard1(pasteboardWithName:PasteBoard1创建:否返回正确的PasteBoard1),但无法从App1访问PasteBoard2(pas

我正在一个应用程序(称为App1)中创建一个名为“创建:”的私有
UIPasteboard
(称为PasteBoard1),在第二个应用程序(称为App2)中创建另一个名为“创建:”的私有
UIPasteBoardWithName:create:
(称为PasteBoard2)的私有
UIPasteboard
。我可以从App2访问PasteBoard1(
pasteboardWithName:PasteBoard1创建:否
返回正确的PasteBoard1),但无法从App1访问PasteBoard2(
pasteboardWithName:PasteBoard2创建:否
返回零)。是什么导致了这种不一致的行为?谢谢

问题确实出在应用程序ID中。App1使用通配符App ID,而App2使用更具体的App ID,因此App2可以访问App1制作的粘贴板,但反之亦然。使用在不同机器上构建的二进制文件时要小心(或者至少要注意了解每个机器的构建过程)

为什么不直接使用
[UIPasteboard generalPasteboard]
?私有pasteboard用于在应用程序之间共享潜在的敏感数据,并且当其依赖于此私有pasteboard的存在时,其交互逻辑最简单。如果数据是敏感的,如果知道仪表板的名称,任何人都可以访问仪表板。你应该使用iOS钥匙链。这里有一个很好的库,可以方便地实现这一点:任何人都可以访问它,或者仅仅是同一个“应用程序组”中的应用程序(我相信这意味着具有相同团队ID的应用程序,在其中搜索“粘贴板”)。此外,库似乎只允许共享字符串,它是否能够处理可变字典数组的可变字典?我应该强调一个事实,使用粘贴板使许多程序逻辑非常合理,不使用粘贴板将是最后的努力。