我正在寻找具有一些不寻常属性的图算法.
图中的每条边都是"向上"边缘或"向下"边缘.
有效路径可以是无限数量的"向上",然后是无限数量的"向下",反之亦然.然而,它不能多次改变方向.
例如,有效路径可能是A"向上"B"向上"C"向下"E"向下"F无效路径可能是A"向上"B"向下"C"向上"D
找到两个节点之间最短有效路径的好算法是什么?如何找到所有等长的最短路径?
我有代码显示如下文档:
documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:self.thisUrl];
NSString *pathExtension = [self.thisUrl pathExtension];
if (pathExtension) {
NSString *UTI = (__bridge NSString*)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)(pathExtension), NULL);
if (UTI) {
documentInteractionController.UTI = UTI;
}
}
documentInteractionController.delegate = self;
[documentInteractionController presentOptionsMenuFromBarButtonItem:shareButton animated:YES];
Run Code Online (Sandbox Code Playgroud)
显示选项菜单时,它会显示可以打开文档的应用程序列表(例如消息),以及下面的操作列表.
选项菜单显示的列表操作与例如Mail应用程序中显示的菜单不同.
主要区别在于Mail应用程序显示"打印"选项,而我的选项菜单则没有.如何获取选项菜单以显示打印选项?


编辑:我做了进一步测试,我实现了方法:
- (BOOL)documentInteractionController:(UIDocumentInteractionController *)controller canPerformAction:(SEL)action
{
return YES;
}
- (BOOL)documentInteractionController:(UIDocumentInteractionController *)controller performAction:(SEL)action
{
return YES; // or NO, doesn't matter
}
Run Code Online (Sandbox Code Playgroud)
这具有在弹出视图中显示"打印","复制"和"保存到相机胶卷"操作的效果.当我点击它们时没有发生任何事情,可能是因为我没有正确实施-performAction.我还在控制台日志中收到有关使用旧方法的警告.
这在某些方面是向后退一步,因为在添加这些方法之前,我无法再打印一些能够使用文档交互控制器正确打印的文档.
我正在审查一些用Perl编写的ClearCase触发器.我注意到在一些正则表达式中,变量既可以直接传递,也可以用大括号中的名称传递.
例如,我在触发器中有以下代码行:
if ($baseline !~ /^${component}_(|.*_)$phase\.\d+(|[a-z]|-\d+|${automateddigit})$/ &&
$baseline !~ /^${project_root}_$phase\.\d+(|[a-z]|-\d+|${automateddigit})$/)
Run Code Online (Sandbox Code Playgroud)
$component,$phase,$automateddigit,$project_root都是变数.
为什么有些像正则表达式$variable一样传递${variable}了?
它是否来自它们的初始化方式?
以下是初始化它们的代码行:
($project = $ENV{CLEARCASE_PROJECT}) =~ s/\@.*$//;
($component = $ENV{CLEARCASE_COMPONENT}) =~ s/\@.*$//;
($project_root, $phase) = ($project =~ /^(.*)_(R\d+.*)$/);
exit(0) if (! $phase);
$phase .= ".0" if ($phase =~ /^R\d+$/);
$automateddigit = '';
$istream = `cleartool desc -fmt "%[istream]p" project:$ENV{CLEARCASE_PROJECT}`;
$componentlist = `cleartool desc -fmt "%[components]Cp" stream:$ENV{CLEARCASE_STREAM}`;
$componentsnbr = split(',', $componentlist);
if ($componentsnbr > 1) {
$automateddigit .= …Run Code Online (Sandbox Code Playgroud) 我发现了一个似乎导致WebKit陷入僵局的问题.如果我从我的主线程运行此代码,我正确地看到一个警报.我可以点击警报上的"确定"按钮,它会解散并且一切正常:
[theWebView stringByEvaluatingJavaScriptFromString:@"alert('hi');"];
Run Code Online (Sandbox Code Playgroud)
如果我进行了一些修改,那么警报信息仍会出现,但是无法点击"确定"按钮 - 您无法关闭警报,如果您闯入应用程序,它将挂在stringByEvaluatingJavaScriptFromString通话中:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
[theWebView stringByEvaluatingJavaScriptFromString:@"alert('hi');"];
});
});
Run Code Online (Sandbox Code Playgroud)
这两者中唯一不同的是,在第二个中,它在调度队列的上下文中在主线程中运行JS.
另一方面,如果我执行以下操作,则不会发生挂起:
- (void) showHi:(id) it
{
[(UIWebView*)it stringByEvaluatingJavaScriptFromString:@"alert('hi');"];
}
....
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performSelectorOnMainThread:@selector(showHi:) withObject:theWebView waitUntilDone:NO];
});
Run Code Online (Sandbox Code Playgroud)
有人可以对导致挂起的问题有所了解吗?
编辑:
相关问题:
使用dispatch_async或performSelectorOnMainThread在主线程上执行UI更改?
什么是主队列上的performSelectorOnMainThread和dispatch_async之间的区别?
Grand Central Dispatch(GCD)与performSelector - 需要更好的解释
非常相似的问题:
当使用GCD调用时,UIWebView stringByEvaluatingJavaScriptFromString在iOS5.0/5.1上挂起
我有一个Request对象,其中包含一个Approvers列表.审批人具有名称和批准职位.
最终,请求将从Mathew开始并在John处结束.
我需要能够重新订购这些允许添加和删除,如下所述.
批准人可以 -
在某个位置添加 - 即.在第3位添加Peter,在这种情况下新订单将是
删除 - 即.删除标记新订单的情况
编辑 - 即您可以将John的位置更改为1,在这种情况下新订单是
我已经提出了许多解决方案,但是没有一个是特别优雅的.
任何帮助将非常感激
In my C++ program I have a class CEvent with trigger and wait member functions based on pthreads (running on Linux). Implementation is quite obvious (i.e. many examples online) if there is one waiting process. However now I need to satisfy the requirement that multiple threads are waiting on the event and should ALL wake up reliably when trigger() is called. As a second condition, only threads that were waiting when trigger() was called should wake up.
My current code: …
我想为IE 8编写一个附加组件,但我想使用纯托管C#.这可能吗?我知道最长的时间我们只谈论C++.
假设我有一个通用的Object类和一个通用的List类.我想维护这些对象的列表.我应该将它们存储为List<Object>或List<Object*>?
如果我使用List<Object>,我有一个方法,如:
if(some_condition) {
Object obj;
myObjectList.append(obj);
}
Run Code Online (Sandbox Code Playgroud)
而我的列表类只保留对该对象的引用,因此只要if语句终止,对象就会被销毁,并且我推送的对象变得无效.那么我最终做了类似的事情:
Object *obj = new Object;
myObjectList.append(*obj);
Run Code Online (Sandbox Code Playgroud)
这样它就不会被破坏.但现在这些物体是不可取的,不是吗?因为现在它们被安全地存储在List作为对象,而不是指向对象的指针,所以我不能在它们上调用delete ...或者当它们从列表中弹出时它们会自动被销毁吗?
在那种情况下,List<Object*>当我完成它们时,我应该使用并从列表中删除它们,不是吗?
如此困惑......我确信我在某处有一个根本的误解.
假设我在gulpfile中有这个:
gulp.task('foo', ...);
gulp.task('bar', function () {
if (something) {
// how do I run task 'foo' here?
}
});
Run Code Online (Sandbox Code Playgroud) 我需要在OpenOffice中使用C++,VBScript,VB.Net或C#通过OLE或本机API进行简单的邮件合并.有没有好的例子?