文档章节

performSelector:相关的知识

SunGiantor
 SunGiantor
发布于 2015/05/22 07:37
字数 232
阅读 59
收藏 0

来看一个例子:

#import <Foundation/Foundation.h>

@interface MyTst : NSObject

- (void) print;

@end

@implementation MyTst

- (void) print

{

    NSLog(@"xxxxxxxxxx");

}

@end

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

#import "MyTst.h"

int main(int argc, char * argv[]) {

//    @autoreleasepool {

//        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

//    }

    

    MyTst *myClass = [[MyTst alloc] init];

// 1    [myClass performSelector:@selector(print) withObject:nil afterDelay:0];

    

//2     [myClass performSelector:@selector(print) withObject:nil];

    

    return 0;

}


上面的代码1、和2 会执行吗?

答案是:2会执行,因为performSelector:@selector(print) withObject:nil相当于向runloop发送了一个启动通知,收到这个通知后print方法会被立刻执行

而1不会被执行。-performSelector:withObject:afterDelay: 方法本质上是一个timer回调,而timer需要依靠RunLoop才能运转,如果这是个非UI的程序且不手动起个RunLoop的话,程序应该直接就结束了吧,就算afterDelay:0 也没用。如果要想执行得 [[NSRunLoop currentRunLoop] run];才行。

© 著作权归作者所有

SunGiantor
粉丝 15
博文 97
码字总数 40328
作品 0
长宁
高级程序员
私信 提问
iOS PerformSelector面试题总结

最近在面试的过程中才发现太多没有注意的细节,每一个问题问到最后都是在怀疑人生中度过... 正好趁着工作敲定了之后将performSelector相关的细节总结一番。 基础用法 performSelecor响应了O...

李周
2018/04/02
0
0
– performSelector:withObject:afterDelay: 无效

[self performSelector:@selector(read) withObject:nil afterDelay:10];这个方法无效。SendMessage : NSObject 这个方法是在sendmessage这个类的实现中执行的,但是无效,如果放到继承自vie...

mmcc
2013/07/13
733
1
iOS中常见警告及处理方法

1 警告:PerformSelector may cause a leak because its selector is unknown 原因:是因为你使用控制器来加载performSelector:方法导致,由于ios运行时在arc下的消息机制是根据方法的返回值...

奋斗的青春年华
2016/07/05
5
0
[Runtime]-动态添加方法

有没有使用过performSelector, 使用过 什么时候使用? 动态添加方法的时候使用过 怎么动态添加方法? 使用runtime 为什么要动态添加方法? OC都是懒加载机制,只要一个方法实现了,就会马上添...

XJDomain
2016/08/03
36
0
ios的线程和同步异步操作

ios的线程和同步异步操作 ios的线程和同步异步操作 ios的多线程,同步异步操作,都是我们日常的开发中经常会遇到的问题,本文把常见的ios线程,同步异步的操作进行了整理。 代码下载: 我博客...

lewis-180
2015/12/08
57
0

没有更多内容

加载失败,请刷新页面

加载更多

Android双向绑定原理简述

Android双向绑定原理简述 双向绑定涉及两个部分,即将业务状态的变化传递给UI,以及将用户输入信息传递给业务模型。 首先我们来看业务状态是如何传递给UI的。开启dataBinding后,编译器为布局...

tommwq
今天
2
0
Spring系列教程八: Spring实现事务的两种方式

一、 Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。...

我叫小糖主
今天
6
0
CentOS 的基本使用

1. 使用 sudo 命令, 可以以 root 身份执行命令, 必须要在 /etc/sudoers 中定义普通用户 2. 设置 阿里云 yum 镜像, 参考 https://opsx.alibaba.com/mirror # 备份mv /etc/yum.repos.d/CentO...

北漂的我
昨天
3
0
Proxmox VE技巧 移除PVE “没有有效订阅” 的弹窗提示

登陆的时候提示没有有效的订阅You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options. 用的是免费版的,所以每次都提示......

以谁为师
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部