IOS 常见内存泄漏以及解决方案

 更新时间:2017年05月02日 17:11:40   投稿:lqh  
这篇文章主要介绍了IOS 常见内存泄漏以及解决方案的相关资料,需要的朋友可以参考下

IOS 常见内存泄漏以及解决方案

整理了几个内存泄漏的例子,由于转载地址已经找不到了,在这里就不一一列出来了。
1 OC和CF转化出现的内存警告

CFStringRef cfString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)picDataString,NULL,CFSTR(":/?#[]@!$&'()*+,;="),kCFStringEncodingUTF8);

NSString *baseString = [NSString stringWithString:(NSString *)cfString];

//释放
CFRelease(cfString);

2,循环参照

A有个属性参照B,B有个属性参照A,如果都是strong参照的话,两个对象都无法释放。

这种问题常发生于把delegate声明为strong属性了。

例,

@interface SampleViewController

@property (nonatomic, strong) SampleClass *sampleClass;

@end

@interface SampleClass

@property (nonatomic, strong) SampleViewController *delegate;

@end

上例中,解决办法是把SampleClass 的delegate属性的strong改为assing即可。

3,死循环

如果某个ViewController中有无限循环,也会导致即使ViewController对应的view关掉了,ViewController也不能被释放。

这种问题常发生于animation处理。

例,

比如,

CATransition *transition = [CATransition animation];

transition.duration = 0.5;

tansition.repeatCount = HUGE_VALL;

[self.view.layer addAnimation:transition forKey:"myAnimation"];

上例中,animation重复次数设成HUGE_VALL,一个很大的数值,基本上等于无限循环了。

解决办法是,在ViewController关掉的时候,停止这个animation。

-(void)viewWillDisappear:(BOOL)animated {

  [self.view.layer removeAllAnimations];

}

内存泄露的情况当然不止以上两种。

感谢阅读,希望能帮助到大家,谢谢大家对本站 的支持!

相关文章

  • iOS对象指针和基础数据类型的强转详解

    iOS对象指针和基础数据类型的强转详解

    最近在做一些小功能,忽然发现有的基础数据转换居然都忘记了。于是想着要赶紧整理下记下来!本文就是记录的一些内容,主要介绍了iOS中对象指针和基础数据类型的强转,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。
    2016-11-11
  • IOS NSUserDefault 记住用户名及密码功能的实例代码

    IOS NSUserDefault 记住用户名及密码功能的实例代码

    这篇文章主要介绍了IOS NSUserDefault 记住用户名及密码功能的实现代码,需要的朋友可以参考下
    2017-09-09
  • iOS开发中#import、#include和@class的区别解析

    iOS开发中#import、#include和@class的区别解析

    这篇文章主要介绍了iOS开发中#import、#include和@class的区别解析,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-08-08
  • IOS第三方库ZXEasyCoding

    IOS第三方库ZXEasyCoding

    本文给大家简单介绍了object-c的第三方库ZXEasyCoding的安装、示例以及github地址,有需要的小伙伴可以参考下
    2016-11-11
  • 浅谈IOS如何对app进行安全加固

    浅谈IOS如何对app进行安全加固

    运行在越狱设备上的IOS app,非常容易遭到破解分析,这里列举一些可以加大破解难度的方法,希望有所帮助。
    2021-06-06
  • Objective-C之Category实现分类示例详解

    Objective-C之Category实现分类示例详解

    这篇文章主要为大家介绍了Objective-C之Category实现分类示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • iOS中实现图片自适应拉伸效果的方法

    iOS中实现图片自适应拉伸效果的方法

    图片拉伸在移动开发中特别常见,比如常用的即时通讯应用中的聊天气泡就需要根据文字长度对背景图片进行拉伸自适应。下面这篇文章主要给大家介绍了iOS中实现图片自适应拉伸效果的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • IOS自适配利器Masonry使用指南

    IOS自适配利器Masonry使用指南

    如果说自动布局解救了多屏幕适配,那众多三方库的出现就解救了系统自动布局的写法。Masonry就是其中一个。用法上也比较简单灵活,很大程度上替代了传统的NSLayoutConstraint布局方式。下面我们就来具体探讨下吧
    2016-01-01
  • IOS中快速集成短信SDK验证开发(SMSSDK),IOS开发中如何设置手机短信验证码

    IOS中快速集成短信SDK验证开发(SMSSDK),IOS开发中如何设置手机短信验证码

    这篇文章主要介绍了IOS中快速集成短信SDK验证开发(SMSSDK),IOS开发中如何设置手机短信验证码 的相关资料,需要的朋友可以参考下
    2016-01-01
  • iOS实现无感知上拉加载更多功能的思路与方法

    iOS实现无感知上拉加载更多功能的思路与方法

    下拉刷新和上拉加载更多功能是一个应用非常广泛的一个效果,最新项目中就遇到这个功能,这篇文章主要给大家介绍了关于iOS实现无感知上拉加载更多功能的思路与方法,需要的朋友可以参考下
    2021-07-07

最新评论