我知道在Objective-C中有几种延迟行动的方法,比如:

performSelector:withObject:afterDelay:

或者使用NSTimer.

但是有一种叫做"积木"的奇特的东西,你可以在那里做这样的事情:

[UIView animateWithDuration:1.50 delay:0 options:(UIViewAnimationOptionCurveEaseOut|UIViewAnimationOptionBeginFromCurrentState) animations:^{

    }completion:^(BOOL finished){
}];

不幸的是,这种方法只适用于设置动画.

我怎样才能在one method中创建一个延迟块,这样我就不必使用所有的@selectors个块,而不需要创建new separate method个块?谢谢

推荐答案

在以下情况下使用dispatch_:

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    //code to be executed on the main queue after delay
    [self doSometingWithObject:obj1 andAnotherObject:obj2];
});

Objective-c相关问答推荐

应用程序终止时处理推送通知

iOS是静态框架还是动态框架?

如何删除手势识别器

setStatusBarHidden 在 iOS 9.0 中已弃用

首次提交应用内购买以供审核

如何推送两个视图控制器但只为第二个设置动画过渡?

Xcode 在 iOS 8 中的 Main() 中引发异常,并带有“所有异常”断点

使用自动布局,如何根据图像使 UIImageView 的大小动态变化?

iOS 编译错误:“CDVCommandDelegateImpl”没有可见的@interface 声明选择器“执行:”

Electron邮件镇静 iOS 8

多个 WKWebView 之间的 Cookie 共享

只有 ONE VIEW 横向模式

registerForRemoteNotificationTypes:iOS 8.0 及更高版本不支持

XCTAssert 和 XCTAssertTrue 有什么区别?

选择 UITableViewCell 时如何进行推送

自动属性合成 (@property) 和继承

无法加载从笔尖引用的“”图像

无法在 Interface Builder (Xcode 5) 中创建与子视图的出口连接

右对齐的 UITextField 空格键在 iOS 7 中不前进光标

使用 UINavigationController 在 UIPageViewController 中下推内容