博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
放到 子线程里面,就不卡了,
阅读量:6817 次
发布时间:2019-06-26

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

-(void)doInitialWork

{

    mStream = [[XMPPStreamalloc]init];

    dispatch_queue_t im_queue;

    im_queue = dispatch_queue_create("im.queue", Nil);

    [mStreamaddDelegate:selfdelegateQueue:im_queue];

    dispatch_block_t b = ^{

        TTLog(@"aa");

    };

同步,不同步,是任务安装添加的顺序执行而已,还是顺序执行的,同步的话,第一个执行完了,第二个才执行,而不同步的话,两个不是安装顺序来执行的,

队列是队列,任务(block)是任务,执行是执行,跳转是跳转,

    dispatch_async(im_queue, b);

    dispatch_sync(im_queue, b);

 

}

一个特点:要在主线程中 操作ui,

1,

dispatch_async(dispatch_get_global_queue(0, 0), ^{

// 处理耗时操作的代码块...
//通知主线程刷新
dispatch_async(dispatch_get_main_queue(), ^{
//回调或者说是通知主线程刷新,
});
});

 

2,

-(void)setupThread:(NSArray*)userInfor{

[NSThread detachNewThreadSelector:@selector(threadFunc:) toTarget:self withObject:(id)userInfor];
}
- (void)threadFunc:(id)userInfor{
NSAutoreleasePool*pool = [[NSAutoreleasePool alloc] init];
//。。。。需要做的处理。
//这里线程结束后立即返回
[self performSelectorOnMainThread:@selector(endThread) withObject:nil waitUntilDone:NO];
[pool release];
}

dispatch_async() 调用以后立即返回,dispatch_sync() 调用以后等到block执行完以后才返回,dispatch_sync()会阻塞当前线程

子线程内不要进行任何UI操作,不要刷新界面。如果需要进行这些操作,通过dispatch_async或performSelectorOnMainThread这两种方法,调出主线程中的方法去执行。

转载于:https://www.cnblogs.com/guligei/p/3511824.html

你可能感兴趣的文章
Android异步处理系列文章四篇之四 AsyncTask的实现原理
查看>>
android-betterpickers
查看>>
linux -- Ubuntu开启root账户,并切换到root用户登陆
查看>>
直接插入排序法
查看>>
SQL Server :理解IAM 页
查看>>
索引深入浅出(0/10):索引深入浅出的聚集索引页
查看>>
STM32 对内部FLASH读写接口函数(转)
查看>>
从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
查看>>
给WebAPI的REST接口添加测试页面(二)
查看>>
Asp.net中GridView使用详解(引)【转】
查看>>
Objective-C语法之扩展(Extension)的使用
查看>>
ZOJ 3819 Average Score(数学 牡丹江游戏网站)
查看>>
支持向量机的优缺点
查看>>
mongodump备份数据库
查看>>
用DMA直接驱动GPIO,实现GPIO最高输出速率(转)
查看>>
[Python] 学习笔记之MySQL数据库操作
查看>>
[LeetCode] Longest Common Prefix 最长共同前缀
查看>>
linux命令行常用快捷键
查看>>
基于FPGA的图像处理(一)--System Generator介绍
查看>>
ADT + JNI实例
查看>>