我知道在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相关问答推荐

UITableViewCell:如何防止蓝色 Select ​​背景不带 isSelected 属性?

iPhone SDK 网络连接检测

如何在没有 Interface Builder 的情况下创建 Cocoa 接口?

UILabel:你如何设置字体大小?

如何将 NSMutableArray 中的字符串按字母顺序排序?

如何更改图像 tintColor

在 NSData 和 base64 字符串之间转换

检测到与加载的库不匹配的 UUID

从我在 iPhone 上的应用程序调用官方 *Settings* 应用程序

如何获得本地化的 Cancel、Done 等?

iOS 在设备旋转时更改自动布局约束

WKWebView 判断 JavaScript 返回值

iOS 设备作为 Web 服务器

判断 NSString 是否仅包含字母数字 + 下划线字符

NSCharacterSet:如何将_添加到 alphanumericCharacterSet 文本限制?

NS_ASSUME_NONNULL_BEGIN 宏

使用 CocoaPods 时如何向 Xcode 添加自定义项目配置?

UIDatePicker 中的最小和最大日期

iPhone如何在打字时获取UITextField的文本?

重复符号问题