作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找不到任何关于做一些真正基本的事情的引用:我希望在主 UI 循环上有一个名为“forever”的方法。我很高兴能有一种方法来调用与 UI 刷新率同步的方法,或者通过传递自定义时间粒度,因为我并不需要它比每 50-100 毫秒更频繁地发生。 C++ (Carbon) 和 Objective C 的答案都很好,尽管我最终会在纯 C++ 应用程序中使用它。如果您还可以建议如何删除此计时器,那就太好了。
请检查评论以获取有关我想使用它的线程场景的进一步说明。
类似的东西
class MySyncedClass {
void start() {
// start calling "execute" member function on main loop every N ms
}
void stop() {
// stop calling "execute"
}
void execute() {
// do something
}
};
最佳答案
通常,您会在应用程序委托(delegate)的 didFinishLaunchingWithOptions 方法中执行类似的操作。当您使用 ivar 保存 NSTimer 的当前实例时,您可以随时停止它。
@implementation AppDelegate {
NSTimer *_timer;
}
- (void) start {
_timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(execute) userInfo:nil repeats:YES];
}
- (void) stop {
//reset timer
if (_timer != nil) {
[_timer invalidate];
_timer = nil;
}
}
- (void) execute {
//do something
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self start];
}
但是如果您只想检查另一个线程状态,则应该通过 block 使用回调。
如果你想从另一个线程在主线程上执行某些操作,你可以使用dispatch_get_main_queue:
dispatch_async(dispatch_get_main_queue(), ^{
//do something
});
关于multithreading - 在 osx 和 ios 的主线程上运行循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16776575/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!