- 博客(17)
- 收藏
- 关注
原创 深入理解RunLoop——笔记
参考原文:https://blog.ibireme.com/2015/05/18/runloop/要点如下:1、事件循环实质就是一个do-while循环,而RunLoop就是实现了do-while循环方法,并管理其需要处理的事件和消息的一个对象2、RunLoop和线程是一一对应的,实际上就是字典的键值对(线程是key,RunLoop是value),由一个全局字典保存3、RunLoo...
2019-03-10 21:27:51 309
原创 使用block优化NSTimer——笔记
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第五十二条:别忘了NSTimer会保留其目标对象)笔记要点如下:1、计时器只有放在运行循环中,才能正常触发任务2、创建计时器:+ (NSTimer *)scheduledTimerWithTimeInterval: (NSTimerInterval)seconds ...
2019-02-23 17:43:42 280
原创 对weak的理解
参考文章:http://blog.cocoachina.com/article/61909__weak typeof(self) weakSelf = self;weak不会使strongSelf的引用计数增加,而是把strongSelf对象指针(weakSelf和strongSelf指针相同)加到了weak的hash表中,以便后续使用weakSelf时能找到测试代码如下:...
2019-02-23 00:09:01 328
原创 使用dispatch_queue_set_specific,避免使用dispatch_get_current_queue——笔记
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第四十六条:不要使用dispatch_get_current_queue)笔记要点如下:1、dispatch_get_current_queue():返回的是执行当前代码的队列测试代码如下:- (void)test{ dispatch_queue_t queueA =...
2019-02-22 14:56:24 2780 1
原创 dispatch_once实现单例模式——笔记
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第四十五条:使用dispatch_once来执行只需要运行一次的线程安全代码)笔记代码如下:+ (id)shareInstance{ static NSString *shareInstance = nil; //定义在static作用域,保证编译器每次执行时复用这个变量,而...
2019-02-22 10:26:09 276
原创 Dispatch Group机制——笔记
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第四十四条:通过Dispatch Group机制,根据系统资源状况来执行任务)笔记要点如下:1、dispatch group是GCD的一项特性,可以把任务分组。这组任务完成后时,调用者会收到通知据此,可将要并发执行的多个任务合并为一组,这样调用者就可以知道这些任务何时能全部执行完...
2019-02-21 17:40:06 2899
原创 NSOperationQueue、performSelector优劣——笔记
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第四十二条:多用GCD,少用performSelector系列方法)(第四十三条:掌握GCD及操作队列的使用时机)笔记要点如下:1、performSelector可能会导致内存泄漏因为使用performSelector,编译器不知道将要调用的选择子是什么,也就无法知道方法名,以及...
2019-02-21 14:54:48 215
原创 使用GCD优化setter、getter方法——(第四十一条:多用派发队列,少用同步锁)笔记
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第四十一条:多用派发队列,少用同步锁)笔记要点如下:1、dispatch_async会拷贝块dispatch_async(queue, ^{ 实现代码; //异步执行时会被拷贝一份})2、栅栏(barrier):在队列中,栅栏块必须单独执行,不能与其他块并行,...
2019-02-20 17:57:42 245
原创 block代码块——(第三十七条:理解“块”这一概念)笔记
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第三十七条:理解“块”这一概念)笔记要点如下:1、块用 ^ 表示,语法结构:返回值类型 (^block名) (参数类似 参数名),如:id (^responseBlock)(id obj)2、块其实就是个值,可以把块赋值给变量,然后像其他变量一样使用3、块的强大之处在于...
2019-02-20 17:00:17 257
原创 类对象——笔记(第十四条:理解“类对象”的用意)
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第十四条:理解“类对象”的用意)笔记要点如下:1、对象类型要在运行期查找,并非在编译期就绑定好2、根据第12条知道,编译器无法知道某类型对象能处理多少方法3、OC对象实例都是指针(*),所以存在堆里,不带 * 的会存栈中4、OC对象结构体: id类型的结构体(注意:i...
2019-02-19 19:05:32 143
原创 消息传递、转发机制——笔记
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第十一条:理解objc_msgSend的作用)(第十二条:理解消息转发机制)笔记消息传递、转发机制顺序如下:1、编辑器将消息转换为objc_msgSendobjc_msgSend(id self, SEL cmd, ...)第一个参数是接收者第二个参数是选择子,指方法名...
2019-02-19 17:00:22 237
原创 iOS一个方法实现监听键盘弹出、变化、收起事件
首先,自然是先监听键盘变化事件UIKeyboardWillChangeFrameNotification,代码如下: //使用NSNotificationCenter [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:...
2018-10-25 11:29:20 4627
原创 iOS多张图片总是只能上传一张的问题
最近在做图片上传的功能,使用的AFNetworking提供的方法上传图片,发现多张图片时总是只有一张图片上传到后台。有问题的上传代码为:特别提醒:创建AFHTTPSessionManager时,直接使用[AFHTTPSessionManager manager]会造成内存泄漏,需要实现单列方法,可参看AFNetworking的Demo AFHTTPSessionMan
2017-02-06 17:30:57 4171
原创 iOS自定义tableViewCell中的按钮无法点击的解决方法
这两天在做项目时,发现在自定义cell中的按钮无法响应点击事件,so百度了一下,发现遇到这个问题的人不少,看了看人家的解决方案——大致就是加tag,或者代理方法,但都觉得太麻烦。自己琢磨了半天,发现可以先将一个UIImageView铺到自定义cell上,即:imageView.frame = cell.bounds再设置:imageView.userInteractio
2016-01-08 09:34:45 5551
原创 只需要一步即可将xml数据转化成自定义类的对象模型
现在大多服务器返回的数据已经是json格式的。但苦逼的是公司用的还是xml格式的,无奈啊!因为用现有的第三方(如TBXML)解析xml觉得比较麻烦,所以自己对NSXMLParser进行了封装,实现将xml数据转化为模型对象返回。链接:https://github.com/TangPiece/TPXMLParser只需要一步即可实现将xml数据转化为对象模型//用
2015-11-19 12:19:22 1079
原创 只需一步即可自定义的类具有归档解档功能
做项目时在将数据保存到本地时,发现writeToFile:不能保存自定义的类,于是只能采用归档、解档方式来进行数据保存。由于自定义的类要具有归档、解档功能,都需要在类中实现encodeWithCoder:和initWithCoder:两个方法。于是用runtime自己封装了一个第三方——用于将自定义的类一步即可具有归档、解档功能链接:https://github.com/T
2015-11-19 11:18:48 387
原创 iOS 多线程学习笔记 —— dispatch_async在serial queue中的异常
2019.02.20更新:回看之前的描述自己都看不太明白要论述的问题。现大概整理要点如下:在同一个队列中,才考虑同步和异步 不同队列之间执行的任务互不影响 队列又分串行队列和并行队列,区别在于同一时间这个队列里有一个线程还是多个线程在执行任务 队列中同步或异步执行任务的区别在于提交任务后是否立即返回以下是学习了别人的文档后,对自己不太理解的知识点的一点总结。要点:同步和异...
2015-07-12 01:33:11 1515
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人