我正在使用Final Cut Pro X的插件,需要将数据发送到另一个程序。到目前为止,我可以使用NSDistributedNotificationCenter
来实现它,但不应该工作。根据其Apple Developer页面:
重要提示:沙盒应用只有在不包含字典时才能发送通知。如果发送应用程序位于App Sandbox中,则notificationInfo必须为nil。
Final Cut Pro X在Mac App Store中出售,我所看到的一切都指向沙盒。有没有人知道FCPX的沙盒是否有错误,有分布式通知中心,还是FxPlugs在沙箱外运行?我宁愿没有关键代码依赖于有效但不应该的东西。
我在FxPlug中发送代码的通知:
NSDistributedNotificationCenter* dist = [NSDistributedNotificationCenter defaultCenter];
NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:@"First value", @"key1",
@"Second value from FCPX", @"key2", @"Third & final value", @"3key3", nil];
[dist postNotificationName:@"FCPX plugin"
object:@"SFPCommApp"
userInfo:dict];
在其他应用中接收代码:
m_center = [NSDistributedNotificationCenter defaultCenter];
[m_center addObserver:self
selector:@selector(GetNotification:)
name:nil
object:listenTo];
// in GetNotification
NSString *notifString = [notification description];
NSString *dispString = @"Got notification from Final Cut Pro X";
dispString = [dispString stringByAppendingString:notifString];
// dispString displayed in a dialog
它适用于Xcode调试器,完全在Xcode外部(均来自Finder)。另外,我需要支持10.6所以不能使用XPC。
有关从FxPlug发送数据的其他方法的想法?谢谢!
答案 0 :(得分:2)
如果您从Apple's developer site下载最新的FxPlug SDK(3.0),它会包含使用XPC构建FxPlug的更新示例。 Final Cut Pro X还没有沙盒,但它似乎很可能在未来。