小编Jon*_*art的帖子

UITextView链接点击识别被延迟

在iOS 7应用程序中,我有一个UITextView链接,但点击链接不会触发.它只响应尴尬的"轻拍".我希望它在用户点击它时立即响应,就像UIWebView链接点击工作方式一样.这是我的设置:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."];
    [text addAttribute:NSLinkAttributeName value:@"myurl://tapped" range:NSMakeRange(6, 16)];

    self.textView.attributedText = text;
    self.textView.editable = NO;
    self.textView.delaysContentTouches = NO;
}

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
    if ([[URL scheme] isEqualToString:@"myurl"])
    {
        // Handle tap

        return NO;
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

shouldInteractWithURL方法的Apple文档说明:"如果用户点击或长按URL链接,文本视图将调用此方法".长按工作正常,但水龙头似乎不起作用.

有谁知道怎么让这个立即回应?

objective-c uitextview ios

35
推荐指数
3
解决办法
1万
查看次数

哪个更快:单个(谓词)或Where(谓词).单个()

这个答案引起的讨论让我很好奇.哪个更快:

someEnumerable.Single(predicate);
Run Code Online (Sandbox Code Playgroud)

要么

someEnumerable.Where(predicate).Single();
Run Code Online (Sandbox Code Playgroud)

毕竟,第一个更短,更简洁,似乎是专门建造的.

甚至ReSharper建议前者:

在此输入图像描述

我在上一篇文章中争论说,它们在功能上是相同的,并且应该具有非常相似的运行时.

.net c# linq

33
推荐指数
2
解决办法
3323
查看次数

快速C++程序,C#GUI,可能吗?

我正在研究开发一种应用程序,它将以每秒约2000行(帧)的速度处理来自线扫描相机的数据.对于这个实时应用程序,我觉得C/C++是要走的路.(这是我的感觉,其他人会同意托管代码不适合这项任务.)

不过,我已经做了非常少的MFC或任何其他的C++图形用户界面.不过,我真的很想做C#GUI.

所以我很自然地用C/C++编写数据密集型代码,用C#编写GUI.GUI将用于设置/校准/在线监控(并可能通过UDP输出数据,因为它在C#中更容易.

首先,我想看看是否有人同意这将是要走的路.根据我的编程经验(擅长低级C算法和高级C#GUI设计),感觉恰到好处.

其次,我不确定正确的方法.我只是在VS2005中汇总了一个解决方案,它从C#应用程序中调用了一些(extern"C")DLL函数.为了确保我能做到这一点,我写了DLL中的一些全局变量,并从中读取:

test.h

int globaldata;
extern "C" __declspec(dllexport) void set(int);
extern "C" __declspec(dllexport) int  get();
Run Code Online (Sandbox Code Playgroud)

TEST.CPP

extern int data=0;
__declspec(dllexport) void set(int num) {
    data = num;
}

__declspec(dllexport) int get() {
    return data;
}
Run Code Online (Sandbox Code Playgroud)

test.cs中

[DllImport("test")]
private static extern void set(int num);

[DllImport("test")]
private static extern int get();
Run Code Online (Sandbox Code Playgroud)

调用get()set()正常工作(get()返回我传递给的数字set()).

现在,我知道您也可以导出C++类,但它是否必须进行管理?这是如何运作的?我是以正确的方式来做这件事的吗?

感谢你的帮助!

*** EDIT ***

首先,感谢您迄今为止的精彩答案!我总是对Stack Overflow印象深刻......

我想我应该更多地关注一件事,不一定是原始速度(这可以是原型和基准测试).让我更关心的一件事是垃圾收集器的非确定性行为.这个应用程序将不会在执行垃圾收集宽容500ms的延迟.

我只是编写代码并在纯C#中尝试这个,但如果我提前知道GC和任何其他非确定性的.NET行为(?)会导致问题,我认为我的时间会更好地用于编码C/C++并找出最好的C#接口.

c# c++ dll export

26
推荐指数
5
解决办法
2万
查看次数

如何在javascript中获取当年的第一天?

我需要javascript代码才能获得一年中的第一天.例如,今年是2013年1月1日.

对于明年它应该是2014年1月1日.所以基本上是当年的第一天.

javascript

26
推荐指数
3
解决办法
4万
查看次数

Intel x86 vs x64系统调用

我正在阅读x86和x64之间的汇编差异.

在x86上,系统调用号被放入eax,然后int 80h执行以生成软件中断.

但是在x64上,系统调用号被放入rax,然后syscall被执行.

我被告知,syscall它比生成软件中断更轻,更快.

为什么它在x64上比x86更快,我可以使用x64进行系统调用int 80h吗?

linux x86 assembly x86-64 interrupt

26
推荐指数
2
解决办法
9436
查看次数

在重新定义时暂时禁用gcc警告

我正在努力使这项工作(在GCC 4.6中)没有对我咆哮.

#define FOO  ""
#define BAR  ""

#if ....
    #define FOO    "Foo, good sir"
#endif

#if ...
    #define BAR    "Bar, my lady"
#endif
....

#define EVERYTHING      FOO BAR ...
Run Code Online (Sandbox Code Playgroud)

我会有很多这些.所以这样做而不是:

#if ...
    #define FOO    "Foo"
#else
    #define FOO    ""
#endif
Run Code Online (Sandbox Code Playgroud)

保存了大量代码,使其更具可读性.我得到的警告是:

警告:"FOO"重新定义[默认启用]

有没有办法在此特定部分的代码中禁用此警告?我发现Diagnostic Pragmas禁用了某些警告,但是我无法找到需要在此处禁用的警告(在此请求或抑制警告选项列表中).

有人知道怎么做吗?或者以不同的方式避免将#else #define所有这些都放到空字符串中?

gcc c-preprocessor

23
推荐指数
2
解决办法
2万
查看次数

python:在不同的包下具有相同名称的两个模块和类

我已经开始学习python并编写练习应用程序.目录结构如下

src
 |
 --ShutterDeck
    |
    --Helper
       |
       --User.py -> class User
    --Controller
       |
       --User.py -> class User
Run Code Online (Sandbox Code Playgroud)

src目录是PYTHONPATH.在一个不同的文件中,让我们说main.py,我想访问这两个User类.我该怎么做.

我尝试使用以下但它失败了:

import cherrypy
from ShutterDeck.Controller import User
from ShutterDeck.Helper import User

class Root:
  @cherrypy.expose
  def index(self):
    return 'Hello World'

u1=User.User()
u2=User.User()
Run Code Online (Sandbox Code Playgroud)

这当然是模棱两可的.我能想到的另一种(c ++方式)方式是

import cherrypy
from ShutterDeck import Controller
from ShutterDeck import Helper

class Root:

  @cherrypy.expose
  def index(self):
    return 'Hello World'

u1=Controller.User.User()
u2=Helper.User.User()
Run Code Online (Sandbox Code Playgroud)

但是当运行上面的脚本时,它会出现以下错误

u1=Controller.User.User()
AttributeError: 'module' object has no attribute 'User'
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么会出错?该目录ShutterDeck …

python package python-import python-3.x

22
推荐指数
2
解决办法
3万
查看次数

停靠多个控件 - 一个填充剩余空间

我正在尝试将N个控件停靠在容器中.我希望他们都填满整个宽度,但堆叠.我想要一个特定的控件(当前是最后一个)来填充剩余的空间,而其他所有控件都有固定的大小.

这个:

Button b1 = new Button() { Text = "Button 1", Dock = DockStyle.Top };
Button b2 = new Button() { Text = "Button 2", Dock = DockStyle.Top };
Button b3 = new Button() { Text = "Button 3", Dock = DockStyle.Fill };

Controls.Add(b1);
Controls.Add(b2);
Controls.Add(b3);
Run Code Online (Sandbox Code Playgroud)

产生这个:

按钮3填充整个父母

正如您所看到的,Button 3正在完成我告诉它的内容:Fill父母.但这不是我想要的.除了手动放置和处理调整大小事件等外,如何让Button 3填充剩余空间?

注意:我没有使用设计师.

.net c# winforms

21
推荐指数
3
解决办法
2万
查看次数

我们如何在winform中的datagridview中进行分页

我想在窗口表单的datagridview中显示每页10条记录,用户必须单击下一步按钮才能显示下10条记录.是否在DataGridview中有一些属性或者我是否需要创建自定义控件.

我需要做些什么来实现这一目标.

c# pagination datagridview custom-controls winforms

20
推荐指数
2
解决办法
7万
查看次数

Python字符串切片步骤澄清

所以我真的没有在切片中得到stride参数的处理.
例如,"123456"[::-2]生产"642",但为什么"123456"[1::-2]生产"2""123456"[2::-2]生产"31"

python stride

19
推荐指数
3
解决办法
2万
查看次数