博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
performSelector:相关的知识
阅读量:5824 次
发布时间:2019-06-18

本文共 897 字,大约阅读时间需要 2 分钟。

hot3.png

来看一个例子:

#import <Foundation/Foundation.h>

MyTst : NSObject

- (void) print;

@implementation MyTst

- (void) print

{

    NSLog(@"xxxxxxxxxx");

}

#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];才行。

转载于:https://my.oschina.net/u/2252309/blog/418024

你可能感兴趣的文章
linux命令:ls
查看>>
Using RequireJS in AngularJS Applications
查看>>
hdu 2444(二分图最大匹配)
查看>>
【SAP HANA】关于SAP HANA中带层次结构的计算视图Cacultation View创建、激活状况下在系统中生成对象的研究...
查看>>
DevOps 前世今生 | mPaaS 线上直播 CodeHub #1 回顾
查看>>
iOS 解决UITabelView刷新闪动
查看>>
CentOS 7 装vim遇到的问题和解决方法
查看>>
JavaScript基础教程1-20160612
查看>>
ios xmpp demo
查看>>
python matplotlib 中文显示参数设置
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
Linux基础命令---rmdir
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
BigDecimal 舍入模式(Rounding mode)介绍
查看>>
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
Squid 反向代理服务器配置
查看>>