作者qnismine (qn是我的)
看板MacDev
标题[问题] 有关dispatch_async的问题请教
时间Thu Sep 10 11:43:40 2015
在viewdidload里面我加了两条Thread
[NSThread detachNewThreadSelector:@selector(gotortsp) toTarget:self
withObject:nil];
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_async(mainQueue, ^{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(getUserProfileSuccess:)
name:@"Notification_GetUserProfileSuccess" object:nil]; });
-(void)gotortsp
{
[self runrtsp];
}
- (void) getUserProfileSuccess: (NSNotification*) aNotification
{
NSLog(@"in");
[self.spinner stopAnimating];
self.DisplaytoImage = [aNotification object];
}
由於runrtsp是建立一个live555连线一直传封包进来让ffmpeg解码 解完码再藉由
notification回传到这里的imageview update ui
我把回传的写在dispatch_get_main_queue();
为什麽没办法更新ui呢@@
可是log却有印in的讯息 代表他有进来 但是却没有更新ui
由於runrtsp是个一直持续不间断的收封包 所以只能做callback回来更新ui
因为不间断 所以无法使用dispatch_queue_create()会一直卡在里面...
应该要怎麽做才能够确实的更新ui呢...拜托各位帮我解答了
--
作者 xoara (PURE) 看板 HatePolitics
标题 [新闻] 姚立明:柯P将以超过80万票赢得北市长
时间 Sun Nov 9 19:39:20 2014
1F:推 winnerme: 本日最好笑就颁给这篇了XDDDDDDDDDDDDDDDDDDDDDDDDDDDDD11/09 19:48
2F:推 kech9111: 白痴 这些幕僚11/09 19:50
3F:推 kioh: 这智商,我快笑死了11/09 19:56
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.167.9
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1441856627.A.E12.html
※ 编辑: qnismine (1.34.167.9), 09/10/2015 11:44:19
4F:推 tom19830924: 我只有看文字部分 你UI有再main thread上更新吗 09/10 13:44
dispatch_get_main_queue();
我有这在这dispatch_async的block setimage 和 stop spinner 可是都没动作..
※ 编辑: qnismine (1.34.167.9), 09/10/2015 14:08:51
5F:→ darktt: 频繁的呼叫NSNotificationCenter会有delay的问题,不怎麽 09/10 14:19
6F:→ darktt: 建议这麽做,可以改用block或delegate来解决 09/10 14:19
7F:→ darktt: 另外你的notification center怎麽是使用addObserver来当 09/10 14:21
8F:→ darktt: post资讯用? 09/10 14:21
9F:→ darktt: 我知道了,你的dispatch_async不该加在addObserver的时候 09/10 14:24
原来频繁呼叫会有这个问题...我post资料是在别的类别下...解码图片後再post资料广播
我在这里写的只有接收端而已...我之前是用nstimer来接 因为nstimer好像是独立main
thread的...一直把image set到 imageview里..只是久了偶尔会出现Bad Access,或delay
想说用别的方式来写写看 以前写android的时候 是在一个message handler只要callback
回来就setimage到 imageview上 所以就用类似的nsnotificationcenter 做做看
不知道block怎麽写一个callback 从别的类别能够一直回传资料到view controller上..
※ 编辑: qnismine (1.34.167.9), 09/10/2015 14:30:49
10F:→ darktt: 而是在post notification center的时候 09/10 14:25
11F:→ qnismine: !!!没错!! 的确是把main_queue加在post的地方.. 09/10 14:35
12F:→ qnismine: 不过的确会有效能的问题... 09/10 14:36
13F:推 liddle: 别这样用NSNotificationCenter,看一下你的memory 09/10 17:25
14F:→ Esvent: 注册NotificationCenter不一定要在main thread 09/11 00:28
15F:→ Esvent: 倒是你的notification在哪个thread post 就会在哪个thread 09/11 00:29
16F:→ Esvent: 被收到 所以重点是在post 09/11 00:30