iOS面试题

来源:互联网 发布:淘宝网苹果电脑版下载 编辑:程序博客网 时间:2024/05/16 13:44

http://www.cocoachina.com/bbs/read.php?tid-302464-fpage-9.html

摘自:http://lizhuang.iteye.com/blog/2001272

http://blog.csdn.net/xunyn/article/details/17251453 

下面关于线程管理错误的是()

  • GCD在后端管理着一个线程池
  • NSOperationQueue是对NSthread的更高层的封装
  • NSThread需要自己管理线程的生命周期
  • GCD可以根据不同优先级分配线
B是错的,SOperationQueue是对GCD的更高层的封装
C是对的。
// 初始化线程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// 设置线程的优先级(0.0 - 1.0,1.0最高级)
thread.threadPriority = 1;
// 开启线程
[thread start];
如果使用系统预设的queue,可以设置DISPATCH_QUEUE_PRIORITY,达到不同的优先级。

小明写了一个基于TCP协议的IOS聊天工具,随着用户数的增多,聊天过程中是不是出现卡顿,程序失去响应的问题,请帮忙分析小明的程序可能出现了什么问题? 如果你是小明的话,如何设计程序结构,保证网络的延迟问题不会影响用户UI操作。

原因分析:TCP协议是基于链接的,虽然能保证数据的准确性,但对资源要求较多。出现卡顿可能是由于资源消耗较多造成。 
                    小明在程序内部没有使用异步线程,导致阻塞主线程
解决办法:开启异步线程进行网络请求(或者使用UDP协议)
采用的协议TCP会在会话传输时,等待数据报,建议采用UDP协议。 
程序采用多线程,服务器模型选择非阻塞的select,epoll。

0 0
原创粉丝点击