关于ios使用线程导致程序不规律的闪退问题解决
2013-09-18 11:03
627 查看
之前自己写的一个小项目,使用支线程的目的就是为了一些运算 或者服务器间的交互。
[NSThreaddetachNewThreadSelector:@selector(setLoadData)toTarget:selfwithObject:nil];
开启一个线程,方法是setLoadData,主要是去服务器那边请求数据。获取数据之后通知主线程解析数据,方法是
[selfperformSelectorOnMainThread:@selector(parseTheData:)withObject:sizeData
waitUntilDone:YES];
在parseTheData里面是具体的解析方法。
SVProgressHUD开源类库,大家都称它为小菊花。
为了在请求数据的过程就显示小菊花,就是“正在加载”,我在支线程里面使用了,
[SVProgressHUDshowWithStatus:@"加载中..."maskType:SVProgressHUDMaskTypeClear];
结果程序不一定每次都闪退,但是有时候操作快了,就会出现闪退。
原因我觉得是:只有主线程才能控制view的变化,会导致资源抢夺 死锁的。
解决方法:将[SVProgressHUD showWithStatus:@"加载中..." maskType:SVProgressHUDMaskTypeClear];写在线程发起的前面。
问题二:
关于在主线程里声明的数组空间,我在支线程中
removeAllObjects
起初还是正常的,但是在不管的请求数据的过程就,发现程序会不规律的闪退,这让我蛋疼~
后来我通知主线程去removeAllObjects,问题就解决了。
原因:支线程别去用主线程的数据 最好,使用的话 也传入复制使用为好。这样会导致资源抢夺,死锁,程序闪退。
以上是自己记录,如果有什么错误,请大神们指出。
[NSThreaddetachNewThreadSelector:@selector(setLoadData)toTarget:selfwithObject:nil];
开启一个线程,方法是setLoadData,主要是去服务器那边请求数据。获取数据之后通知主线程解析数据,方法是
[selfperformSelectorOnMainThread:@selector(parseTheData:)withObject:sizeData
waitUntilDone:YES];
在parseTheData里面是具体的解析方法。
SVProgressHUD开源类库,大家都称它为小菊花。
为了在请求数据的过程就显示小菊花,就是“正在加载”,我在支线程里面使用了,
[SVProgressHUDshowWithStatus:@"加载中..."maskType:SVProgressHUDMaskTypeClear];
结果程序不一定每次都闪退,但是有时候操作快了,就会出现闪退。
原因我觉得是:只有主线程才能控制view的变化,会导致资源抢夺 死锁的。
解决方法:将[SVProgressHUD showWithStatus:@"加载中..." maskType:SVProgressHUDMaskTypeClear];写在线程发起的前面。
问题二:
关于在主线程里声明的数组空间,我在支线程中
removeAllObjects
起初还是正常的,但是在不管的请求数据的过程就,发现程序会不规律的闪退,这让我蛋疼~
后来我通知主线程去removeAllObjects,问题就解决了。
原因:支线程别去用主线程的数据 最好,使用的话 也传入复制使用为好。这样会导致资源抢夺,死锁,程序闪退。
以上是自己记录,如果有什么错误,请大神们指出。
相关文章推荐
- 关于控制Dcom程序使用端口的问题及解决方式
- iOS 解决使用Cell的复用导致视图重叠的问题
- 关于android程序中使用bitmap放大功能时的OOM问题解决方法
- htc a3380关于因使用google map api,导致apk程序安装时提示 程序未安装 的解决方法
- 解决使用 libjpeg 保存图片时因磁盘写入失败导致程序退出的问题
- iOS导航控制器使用interactivePopGestureRecognizer导致导航栏标题可能层次错乱的问题解决
- 关于GDI资源使用后未释放,导致GDI对象猛增,程序花屏,异常退出的问题
- 解决关于ios访问相机闪退问题
- 关于spring mvc拦截器拦截js文件等导致无法正常使用问题的解决
- iOS开发小记:关于环信Demo3.0的使用总结以及昵称和头像问题的研究与解决
- IOS使用autoresizingMask导致控件大小异常问题解决
- 关于使用UIAlertView之后pop或者push时键盘闪退问题解决方法
- 关于“此程序集中已使用了资源标识符 "Test.Searchn.resources”问题的解决办法
- 关于:使用JSP+Servlet重定向网页导致CSS等失效的问题的解决
- iOS --- 使用runtime解决3D Touch导致UIImagePicker崩溃的问题
- ios中关于使用arc,并且使用了ASIhttp请求较多发生崩溃问题的解决
- iOS-77-解决iOS9闪退,在iOS10上正常的问题;以及解决百度导航sdk导致审核不通过
- 关于帝国cms,列表页模版,使用程序代码不生效问题解决
- 关于spring mvc拦截器拦截js文件等导致无法正常使用问题的解决
- 关于IIS服务启动失败的问题:“IIS提示‘另一个程序正在使用此文件,进程无法访问’”,的解决方法