iOS 侧滑 横竖屏 内存泄漏

上周主要了解到了内存的泄露问题还有一些收获的小的知识点,特此记录下来。

1.左侧的滑动以及横屏竖屏的切换

1.1左侧的滑动效果

在屏幕的左侧点击不放,一直往右侧拖动以返回之前的页面

代码:

根控制器中开放左侧滑动效果

其中将代理设置为nil的原因是:

如果设置为self,那么该页面中的系统的返回按钮是无法点击的。而且代理的方法:

-(void)edgePanGesture:(UIScreenEdgePanGestureRecognizer *)sender

在拖动的过程中会不断的调用。

而且该效果enabled目前是默认为yes。

1.2 屏幕方向的切换

iOS 侧滑 横竖屏 内存泄漏_第1张图片
图片切换的方法

其中 NSInvocation 是传递消息的一种方法:当传递的参数过多时可以考虑使用。

而方法签名NSMethodSignature中保存了方法的名称/参数/返回值,和方法的调用没有太大的关系.

iOS 侧滑 横竖屏 内存泄漏_第2张图片
系统转屏相关的方法

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中使用的话,会导致循环。

iOS 侧滑 横竖屏 内存泄漏_第3张图片

应该将block中的bottomDetailCollectionView改为弱引用的ws.bottomDetailCollectionView。

所以一般在类似的属性声明方法,该属性使用weak修饰。

你可能感兴趣的:(iOS 侧滑 横竖屏 内存泄漏)