`
jsntghf
  • 浏览: 2551430 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

performSelector:withObject:afterDelay:调用无效的解决方法

    博客分类:
  • iOS
阅读更多

performSelector:withObject:afterDelay:调用后,指定的@selecter()没有执行,[NSTimer timerWithTimeInterval:invocation:repeats:]也存在这个问题。反复验证后发现,这种现象出现在子线程中,主线程中可正常使用。因此必须保证调用performSelector:withObject:afterDelay:是在主线程中。

 

因此,可以使用GCD的方式,将此调用放在主线程中执行:

 

dispatch_async(dispatch_get_main_queue(), ^{

});

 

分享到:
评论

相关推荐

    objective c 消息 objc_msgSend

    它们包括`performSelector:`, `performSelector:withObject:`, `performSelector:withObject:afterDelay:`等。这些方法允许在运行时动态地决定要执行哪个方法,增强了代码的灵活性。 例如,你可以这样使用`...

    IOS多线程之GCD(3) - iOS知识库1

    1. 调用`performSelector:withObject:afterDelay:`方法。这是一个非常简单的延迟执行方法,它的特点是无论在哪里调用,`rc\`函数都会在当前线程中执行。例如,在`YYViewController.m`的`viewDidLoad`方法中,我们...

    OC-performSelector

    - `-[NSObject performSelector:withObject:]`可以传递一个参数到方法中。 - `-[NSObject performSelector:withObject:withObject:]`则允许传递两个参数。 4. **延迟执行与线程安全**: - `-[NSObject ...

    OC-performSelectorInBackground

    - `performSelector:withObject:afterDelay:inModes:` - 延迟并在特定RunLoop模式下执行 selector。 理解并熟练运用这些方法,能够帮助开发者编写出高效、流畅的应用程序。在实际项目中,还需要结合GCD(Grand ...

    ios demo,performSelector和respondsToSelector

    `performSelector`还支持延迟执行和带参数的调用,如`performSelector:withObject:afterDelay:`。 其次,`respondsToSelector:`是另一个关键的实例方法,用于检查对象是否响应特定的选择子(selector)。这是确保在...

    iOS中UIAlertView3秒后消失的两种实现方法

    另一种方法是利用`performSelector:withObject:afterDelay:`方法,该方法会在指定延迟后调用指定的方法。在这个例子中,我们在2秒后调用`dimissAlert:`方法来关闭UIAlertView。代码如下: ```objc // 创建并展示...

    iOS长按按钮

    [self performSelector:@selector(lazyButtontouchDown) withObject:nil afterDelay:self.minimumPressDuration]; } -(void)lazyButtontouchDown { } //当离开按钮的时候取消所调用的方法 - (void)...

    ios-自定义选择器.zip

    有时我们希望在未来的某个时刻执行某个操作,这时可以使用`performSelector:withObject:afterDelay:`方法。这个方法接受一个选择器、一个参数(如果有的话)和一个延迟时间,然后在指定的时间后执行对应的方法。 4...

    TestForCancelPrePerformReq.zip

    - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay; ``` 在这里,`aSelector`是你要延迟执行的方法,`anArgument`是传递给该方法的参数(可选),而`delay`是...

    objective-c小技巧

    [self performSelector:@selector(machineBallAction) withObject:nil afterDelay:0]; 3.实现随机数:srandom(time(NULL)); 4. #pragma mark - #pragma mark Initialization 它们告诉Xcode编译器,要在...

    多年iOS开发经验总结

    另一种是使用NSInvocation对象来手动设置方法的selector、目标、参数等,并通过performSelector:withObject:afterDelay:调用invocation对象的invoke方法,从而实现延迟调用多参数方法。 再来看数据类型的比较,包括...

    对比分析iOS延迟执行的4种方式

    通过调用`performSelector:withObject:afterDelay:`,我们可以指定一个方法在给定的时间延迟后执行。需要注意的是,此方法必须在主线程中调用,否则不会生效。由于其非阻塞特性,程序会继续运行,但一旦调度,就无法...

    IOS部分面试题

    在iOS开发领域,面试题...- 延时执行:可以使用`performSelector:withObject:afterDelay:`或者GCD的`dispatch_after`。 以上是iOS面试中可能会遇到的一些基础问题和解答,掌握这些知识点对于iOS开发者来说至关重要。

    iOS定时器Demo

    3. **performSelector:withObject:afterDelay:** - 这是Objective-C中的一个简单延时执行方法,适用于单次不重复的任务。方法会在指定秒数后调用指定的方法。 - 注意,由于内存管理机制,如果调用的对象在延时期间...

    斯坦福大学iOS开发教程2011年秋Lecture 16

    - **方法**:`-[NSObject performSelector:withObject:afterDelay:]` ```objective-c [self performSelector:@selector(reloadData) withObject:nil afterDelay:0]; ``` - `aSelector`参数表示要调用的方法。 ...

    iOS软件开发之详解剪贴板.pdf

    4. 定义`showMenu:`方法,使用`performSelector:withObject:afterDelay:`在适当的时间显示快捷菜单。 5. 在`showMenu:`方法中,设置`UIMenuController`的菜单项,并关联相应的操作。 6. 当复制操作触发时,使用`...

    iOS开发技巧大汇总

    有时候我们需要在一段时间后执行某个方法,可以通过`performSelector:withObject:afterDelay:`来实现。例如,我们希望在5秒后执行`doSomething:`方法: ```objective-c [self performSelector:@selector...

    仿 iphone 界面删除应用图标抖动

    - `performSelector`方式:可以使用`performSelector:withObject:afterDelay:`来安排一系列的动画动作。在每个延迟执行的方法中,改变图标的位置并递归地调用自身,直到达到指定的次数或条件停止。 3. **删除按钮...

    IOS开发中延迟执行和取消

    通过`-[NSObject performSelector:withObject:afterDelay:]`方法,我们可以指定一个方法在延迟指定时间后执行。例如,如果你有一个名为`delay`的方法,你可以这样调用: ```objc [self performSelector:@selector...

Global site tag (gtag.js) - Google Analytics