博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
随笔1
阅读量:2094 次
发布时间:2019-04-29

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

把握  线程 和 Runloop 的关系

返回  当前类的实例  的  类方法  都是 autorelease的

会交给  所在 释放池 进行管理

主线程的 runloop 是一直存在的

当 perform selector 在后台线程中执行的时候, 这个线程 必须 有一个开启的 runloop

子线程的 runloop 默认是不开启的

perform selector 是 selector源

在创建的子线程中要先放一个 @autoreleasepool { }

NSOperation的main方法中 就是如此

operation 的 executing和 finishing 状态量需要用willChangeValueForKey / didChangeValueForKey来触发KVO消息

要注意:

并发的Operation放在子线程中的情况

子线程默认不创建runloop,start方法返回之后 子线程就退出了

所以start方法中创建异步NSURLConnection的delegate回调时线程已经木有了

 

tableview 用runloop加载图片的性能优化

[self.cellImageView  performSelector:@selector(setImage:)

withObject: downloadedImage

afterDeleay:0

inModes:@[ NSDefaultRunLoopMode]

]

被add到Queue里面的Operation必定是并发的,不用 care 它自身是不是并发设计了

这是为什么呢?这是因为Queue回味每一个add到队列的Operation创建一个线程来运行其start方法

如果maxConcurrentOperationCount设置为1或者吧operation放到 [NSOperationQueue mainQueue]里面执行,那它们只能是顺序执行,不可能并发

关于实时搜索问题如何保证结果是搜索的最新的条件的结果

每次执行request的时候都把上一个operation cancel掉,然后在completionBlock中判断operation是否cancel状态,如果是cancel状态,那么就不返回response的值不就行了

问题: nav.delegate 的属性语义修饰问题(iOS8 以及以下是assign

   tableView的headerview的刷新问题(iOS8刷新的时候 不会应用headerview最新的frame,即刷新不起作用)

转载地址:http://awwhf.baihongyu.com/

你可能感兴趣的文章
Java中的IO流
查看>>
java中的关键字
查看>>
如果某个方法是静态的,它的行为就不具有多态性
查看>>
优化Hibernate所鼓励的7大措施
查看>>
Java 8系列之重新认识HashMap
查看>>
HashMap 、 ArrayList、String 重写了equals方法 而Object类(比如User)没有重写
查看>>
Servlet的生命周期
查看>>
Object中的getClass()返回的是当前运行的类
查看>>
加载驱动程序的方法
查看>>
深入理解java异常处理机制
查看>>
object类的基本方法
查看>>
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
查看>>
Dubbo分布式服务框架入门(附工程)
查看>>
两年Java开发工作经验面试总结
查看>>
作为Java面试官--谈谈一年来的面试总结
查看>>
两年Java程序员面试经
查看>>
面试心得与总结---BAT、网易、蘑菇街
查看>>
如何面试有2年java工作经验的应聘人员
查看>>
Java实现简单的递归操作
查看>>
Java实现简单的递归操作
查看>>