小编smi*_*lar的帖子

如何在Python 3.5中使用async/await?

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import time

async def foo():
  await time.sleep(1)

foo()
Run Code Online (Sandbox Code Playgroud)

我无法使这个简单的例子运行:

RuntimeWarning: coroutine 'foo' was never awaited foo()
Run Code Online (Sandbox Code Playgroud)

python coroutine python-3.x async-await python-3.5

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

我应该如何将NULL传递给va_list函数参数?

我想将NULL传递给以下函数的第4个参数:

bool CCMenuItemToggle::initWithTarget(CCObject* target, SEL_MenuHandler selector, CCMenuItem* item, **va_list args**);
Run Code Online (Sandbox Code Playgroud)

像这样:

CCMenuItemToggle::initWithTarget(this, menu_selector(GOSound::toggleButtonCallback), NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

我在XCode(clang3.1)中构建它时没关系.但是当我将代码移植到android ndk(g ++ 4.7)时,它无法编译:

没有可行的从'int'转换为'va_list'(又名'__builtin_va_list')

我该怎么处理呢?

c++ g++ variadic-functions android-ndk

7
推荐指数
1
解决办法
4173
查看次数

关于string.c_str()生命周期

我想知道如果我写void func(const char *str);的有效,str如果我写如下:

auto str = string("hello").c_str();
func(str);
Run Code Online (Sandbox Code Playgroud)

它与下面的代码有什么不同?

func(string("hello").c_str())
Run Code Online (Sandbox Code Playgroud)

c++ string

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

[UIApplication sendEvent:]是否在NSRunLoop中执行?

我读了关于runloop的这个苹果文档:

运行循环是一个事件处理循环,用于调度工作并协调传入事件的接收...运行循环从两种不同类型的源接收事件.输入源提供异步事件...定时器源提供同步事件......

现在我知道performSelector:withObject:afterDelay:NSTimer在runloop中运行.

该文档未提及触摸事件作为输入源.我想知道:

Q1:[UIApplication sendEvent:]在某些默认的runloop中也会通过run 发送触摸事件吗?
Q2:如果Q1的答案为YES,那么默认的runloop是否是相同的runloop句柄performSelector:withObject:afterDelay:NSTimer事件?

cocoa-touch objective-c nsrunloop ios

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

如何使用lambda作为第一个参数覆盖可变参数模板?

为什么以下函数覆盖(lambda作为第一个参数)不起作用?

template<typename ...Args>
void call(Args&& ...args) {
    std::cout << "call 1";
}

template<typename ...Args>
void call(CustomObject object, Args&& ...args) {
    std::cout << "call 2";
}

// see this function
template<typename ...Args>
void call(std::function<void ()>, Args&& ...args) {
    std::cout << "call 3";
}
Run Code Online (Sandbox Code Playgroud)
  • call()输出'调用1'
  • call(CustomObject())输出'调用2'
  • call([](){})输出'调用1' // 错误

为什么不call([](){})输出'call 3'

我应该如何声明call([](){})输出'call 3'的函数?

编辑: @KennyTM给出了上述答案.

template<typename F, typename ...Args>
auto call(F&& f, Args&& ...args)
    -> typename std::enable_if<std::is_same<decltype(f()), void>::value>::type …
Run Code Online (Sandbox Code Playgroud)

c++ lambda variadic-templates c++11

1
推荐指数
1
解决办法
410
查看次数

如何在传递给下一个响应者之前更改 UITouch 的位置

我有一个父 UIView 和一个子 UIView,我想让触摸从子视图传递到父视图,并由两个视图处理。

y--------------
| parent      |
|   x------   |
|   |child|   |
|   |_____|   |
|_____________|
Run Code Online (Sandbox Code Playgroud)

所以在子视图中,我覆盖:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // child touch handle 
    // ...
    // parent touch handle
    [self.nextResponder touchesBegan:touches withEvent:event];
}
Run Code Online (Sandbox Code Playgroud) 但是当我触摸子级中的“x”时,它转发到父级中的“y”(相对于父级)。我想要一个传递效果(子级中的“x”,传递到父级中的“x”),所以我需要在转发之前更改触摸的位置,对吗?我该怎么做?

谢谢@Fogmeister。就是这样。

UITouch 现在可以传递给父级。在父母的touchesBegan,打电话

[touch locationInView:self]
Run Code Online (Sandbox Code Playgroud)

获取触摸位置。

uiview ios

1
推荐指数
1
解决办法
1542
查看次数

如何检测UICollectionView上的触摸?

我想在屏幕上有手指时禁用UICollectionViewController的自动旋转,就像iPhone照片应用程序那样.

怎么做?

  • 如果使用轻击手势,如何区分不同的触摸状态?(状态应该是touching,即使在手指移动之后.)
  • 如果使用touchBegan:withEvent:,在哪里放置该代码?(命中视图可以是UICollectionView的任何子视图.)

touch ios uitapgesturerecognizer uicollectionview

1
推荐指数
1
解决办法
5407
查看次数