这篇文章会长期定期更新,以此记录下自己在iOS开发中遇到的问题。也欢迎大家留言补充。
1.今天研究贝塞尔曲线时候,发现了一个写法:makeObjectsPerformSelector
[self.displayView.layer.sublayers makeObjectsPerformSelector:@selector(removeFromSuperlayer)];其中makeObjectsPerformSelector是不曾见过,查阅资料,发现是NSArray和NSSet的方法。类似NSNotification,和for循环实现差不多,效率比for循环高,并发得执行一件事。它还有一个兄弟方法:- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)argument;经测试,argument必须为非基本类型,这点比较特殊。
2.内存分配
作用:
UIImage创建有两种方式,imageNamed和imageWithContentOfFile。
imageNamed使用后图片不会立马释放内存,对于图片大量反复使用,可以用此方法。
imageWithContentOfFile,使用后会清除内存,大图片不常用可以调用此法。
3.重度使用NSURLProtocol的陷阱
项目一直是监控url请求,并且拦截一些特定请求,做一些中转重定向操作。前期有段时间切换了AFNetworking3.0,改用NSURLSession了(苹果推荐使用替代connection),但是拦截器我依然[NSURLProtocol registerClass:[SUURLProtocol class]];这样处理,发现监听不到。经过调试发现,需要给NSURLSessionConfiguration设置下protocal,类依然可以共用。
注意点:系统自身NSURLSessionConfiguration的protocolClasses数组有4个值,我们添加自定义的拦截器后需要插入在头部。和NSConnection的拦截器不同(这些是插入队尾)。当然你直接设置你自己的也没问题,为了侵入性最小,我们还是选择插入队头。这样你的app所有请求都会被你接管。
NSURLProtocol的具体用法,我后续会单独发偏文章。