上周主要了解到了内存的泄露问题还有一些收获的小的知识点,特此记录下来。
1.左侧的滑动以及横屏竖屏的切换
1.1左侧的滑动效果
在屏幕的左侧点击不放,一直往右侧拖动以返回之前的页面
代码:
其中将代理设置为nil的原因是:
如果设置为self,那么该页面中的系统的返回按钮是无法点击的。而且代理的方法:
-(void)edgePanGesture:(UIScreenEdgePanGestureRecognizer *)sender
在拖动的过程中会不断的调用。
而且该效果enabled目前是默认为yes。
1.2 屏幕方向的切换
其中 NSInvocation 是传递消息的一种方法:当传递的参数过多时可以考虑使用。
而方法签名NSMethodSignature中保存了方法的名称/参数/返回值,和方法的调用没有太大的关系.
2.内存泄漏的一些看法
第一次考虑到内存泄漏的问题,当发现了界面的内存泄漏之后,总结了几个步骤:
1.在该类的dealloc中打印,查看是哪些类之间的联系出现了问题。
2.释放该类中的NSNotification(通知)、NSTimer(定时器)等
3.注意对self等的弱化指针的声明方法,代理使用weak,block使用copy。
self的弱化方式有几种正确的:
__weak __typeof(self) weakSelf = self;
__weak __typeof(&*self) weakSelf = self;
__weak UIViewController *weakSelf =self;
但是这里有一个问题,可不可以使用__weak typeof() ?
4.使用下方的方法声明的bottomDetailCollectionView是一个强指针,如果在block中使用的话,会导致循环。
应该将block中的bottomDetailCollectionView改为弱引用的ws.bottomDetailCollectionView。
所以一般在类似的属性声明方法,该属性使用weak修饰。