我经常想在将来几微秒内执行一些代码.现在,我这样解决:
- (void)someMethod
{
// some code
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
[self performSelector:@selector(someMethod) withObject:nil afterDelay:0.1];
Run Code Online (Sandbox Code Playgroud)
它有效,但我每次都要创建一个新方法.是否可以使用块而不是这个?基本上我正在寻找一种方法,如:
[self performBlock:^{
// some code
} afterDelay:0.1];
Run Code Online (Sandbox Code Playgroud)
那对我来说真的很有用.
我正在尝试这两种方法:
dispatch_async(dispatch_get_main_queue(),^{
[self handleClickAsync];
});
Run Code Online (Sandbox Code Playgroud)
和
[self performSelector:@selector(handleClickAsync) withObject:nil afterDelay:0];
Run Code Online (Sandbox Code Playgroud)
响应按钮按下.
第二个允许UIButton突出显示正如人们期望的那样并handleClickAsync在下一个运行循环中执行(我想:"以后某个时候"肯定).第一个不允许UIButton实例在操作完成之前点亮.
使用GCD执行此操作的正确方法是什么,或者performSelector仍然是唯一的方法?
我遇到的唯一功能差异是我可以取消预定的消息performSelector:withObject:afterDelay:.我不知道取消提交的块的方法dispatch_after.(请告诉我是否有办法做到这一点,我不知道).
我想了解更多:
我有一个方法,我想在后面-viewDidLoad和后台线程中调用.有没有办法结合这两种方法:
[self performSelector:(SEL) withObject:(id) afterDelay:(NSTimeInterval)]
和
[self performSelectorInBackground:(SEL) withObject:(id)]?
我正在开发一个应用程序,我想在单独的队列中使用调用方法dispatch_async.我希望在一定的时间间隔后重复调用该方法.但是方法没有被调用.
我不知道什么是错的.这是我的代码:
dispatch_async( NotificationQueue, ^{
NSLog(@"inside queue");
timer = [NSTimer scheduledTimerWithTimeInterval: 20.0
target: self
selector: @selector(gettingNotification)
userInfo: nil
repeats: YES];
dispatch_async( dispatch_get_main_queue(), ^{
// Add code here to update the UI/send notifications based on the
// results of the background processing
});
});
-(void)gettingNotification {
NSLog(@"calling method ");
}
Run Code Online (Sandbox Code Playgroud) 如何在Xcode中添加延迟?
self.label1.alpha = 1.0
//delay
self.label1.alpha = 0.0
Run Code Online (Sandbox Code Playgroud)
我想让它等待大约2秒钟.我读过有关time_dispatch和导入darwin库的内容,但我无法使其工作.那么有人可以一步一步地解释它吗?
我是iOS Accessibility领域的新手,我正在尝试使用此UIAccessibilityNotification功能,但它无法正常运行。我用一个按钮编写了一个非常简单的应用程序,当您单击该按钮时,将调用此方法。
- (IBAction)announce:(id)sender {
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,
@"Speak this out loud");
}
Run Code Online (Sandbox Code Playgroud)
以我的理解,当您单击按钮时,画外音将显示为“大声说出来”,但它正在读取按钮名称。谁能告诉我代码有什么问题,或者为什么我用错了代码?
为了清楚起见,我双击了按钮。当您单击该按钮时,它将读取按钮名称和特征(“ button”),而当您双击该按钮时,它将仅读取按钮名称。
感谢@ChrisCM的回答。延迟发布使其生效。
@IBAction func announce(sender: AnyObject) {
let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(2 * Double(NSEC_PER_SEC)))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, "Item added to cart")
})
}
Run Code Online (Sandbox Code Playgroud)
但是,仍然存在一个小问题,即单击“添加到购物车”按钮后,画外音将定位到第一个可访问项,即后退按钮,并读取“后退按钮”,然后读取announcementNotification参数。
所以我正在制作一个猜测应用程序,我想知道如何在一秒钟后更改字符串或标签.
例如,当用户按下按钮时,它将显示"是"或"否".在显示"是"或"否"之后,它将等待一秒钟并返回到????.我怎么去添加一个计时器,所以它显示是的它会回到???? 一秒钟?
谢谢
调用[self presentViewController]一个实例UIAlertController立即加载警报。有没有办法延迟它的呈现?
[self presentViewController:alert animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud) 有没有为什么在调度后用2秒调用一个方法,就像performSelector:withObject:afterDelay:?
ios ×9
objective-c ×6
iphone ×4
swift ×3
asynchronous ×1
cocoa-touch ×1
delay ×1
ios4 ×1
nstimer ×1
voiceover ×1
xcode ×1