[问题] 有关dispatch_async的问题请教

楼主: qnismine (qn是我的)   2015-09-10 11:43:40
在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呢...拜托各位帮我解答了
作者: tom19830924 (Tom Hsu)   2015-09-10 13:44:00
我只有看文字部分 你UI有再main thread上更新吗
作者: darktt (小朱)   2015-09-10 14:19:00
频繁的呼叫NSNotificationCenter会有delay的问题,不怎么建议这么做,可以改用block或delegate来解决另外你的notification center怎么是使用addObserver来当post资讯用?我知道了,你的dispatch_async不该加在addObserver的时候而是在post notification center的时候
楼主: qnismine (qn是我的)   2015-09-10 14:35:00
!!!没错!! 的确是把main_queue加在post的地方..不过的确会有效能的问题...
作者: liddle (Guderian)   2015-09-10 17:25:00
别这样用NSNotificationCenter,看一下你的memory
作者: Esvent (Esvent)   2015-09-11 00:28:00
注册NotificationCenter不一定要在main thread倒是你的notification在哪个thread post 就会在哪个thread被收到 所以重点是在post

Links booklink

Contact Us: admin [ a t ] ucptt.com