相关疑难解决方法(0)

块而不是performSelector:withObject:afterDelay:

我经常想在将来几微秒内执行一些代码.现在,我这样解决:

- (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)

那对我来说真的很有用.

iphone cocoa-touch objective-c ios objective-c-blocks

87
推荐指数
5
解决办法
4万
查看次数

在下一个运行循环上执行:GCD有什么问题?

我正在尝试这两种方法:

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仍然是唯一的方法?

asynchronous objective-c grand-central-dispatch ios

28
推荐指数
2
解决办法
1万
查看次数

performSelector:withObject:afterDelay:和dispatch_after之间有什么权衡

我遇到的唯一功能差异是我可以取消预定的消息performSelector:withObject:afterDelay:.我不知道取消提交的块的方法dispatch_after.(请告诉我是否有办法做到这一点,我不知道).

我想了解更多:

  • 功能权衡(一个接口可以实现什么,而另一个接口不能实现?)
  • 性能权衡(一种实现更有效吗?在哪些情况下?)
  • 风格权衡(我是否更喜欢某个任务的界面,以更好地遵循常见的风格或约定?)

iphone objective-c grand-central-dispatch ios4 ios

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

如何在延迟和后台线程中调用方法

我有一个方法,我想在后面-viewDidLoad和后台线程中调用.有没有办法结合这两种方法:

[self performSelector:(SEL) withObject:(id) afterDelay:(NSTimeInterval)]

[self performSelectorInBackground:(SEL) withObject:(id)]

iphone objective-c ios

14
推荐指数
2
解决办法
1万
查看次数

没有使用dispatch_async调用并重复NSTimer的方法

我正在开发一个应用程序,我想在单独的队列中使用调用方法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)

iphone nstimer grand-central-dispatch ios

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

Xcode中的等待/延迟(Swift)

如何在Xcode中添加延迟?

self.label1.alpha = 1.0
//delay
self.label1.alpha = 0.0
Run Code Online (Sandbox Code Playgroud)

我想让它等待大约2秒钟.我读过有关time_dispatch和导入darwin库的内容,但我无法使其工作.那么有人可以一步一步地解释它吗?

xcode delay swift

4
推荐指数
2
解决办法
1万
查看次数

UIAccessibilityNotificationQuestion

我是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参数。

accessibility ios voiceover swift

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

一秒钟后如何在swift中更改字符串?

所以我正在制作一个猜测应用程序,我想知道如何在一秒钟后更改字符串或标签.

例如,当用户按下按钮时,它将显示"是"或"否".在显示"是"或"否"之后,它将等待一秒钟并返回到????.我怎么去添加一个计时器,所以它显示是的它会回到???? 一秒钟?

谢谢

ios swift

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

有延迟的presentViewController

调用[self presentViewController]一个实例UIAlertController立即加载警报。有没有办法延迟它的呈现?

[self presentViewController:alert animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

objective-c ios uialertcontroller

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

在IOS中如何通过gcd延迟调用方法?

有没有为什么在调度后用2秒调用一个方法,就像performSelector:withObject:afterDelay:?

objective-c ios

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