运行Xcode Analyze方法
Product---->Analyze
1、可能存在的内存泄漏监测(Memory)
运行Analyze后,查看一处Memory警告,可以看到如下代码:Potential leak of an object。
注意上面的代码并不是L63行存在泄漏,我们点击“Potential leak of an object”前面的箭头,指示会出现一些变化,如下图。
->1. Method returns an Objective-C object with a +1 retain count
alloc一个对象的时候,其内存计数内存计数(retain count)+1,
->2.Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
因为content的setter方发会将object的内存计数+1,如下代码,content是retain属性。执行完L62代码后,self.content的内存计数就为 2
建议修改方案:
2、无效数据监测(Dead store)
3、逻辑错误监测(Logic error)
如上代码,当Tag不等于1、2和3的时候,就会出现很问题了。len is a garbage value。建议在声明变量时,同时进行初始化。
在project-setting中找到“Run Static Analyzer”键,然后把值修改为“YES”.这样在编码的时候,xcode就可以自动为我们检查内存泄露了.
泄露
1.Logic error :The left operand of "==" is a grabagevalue
原因 "=="左侧的变量为初始化
2.Potential leak of an object allocated on line456,
Method returns an Objective-C object with a+1 retain count
通常为定义的对象未释放,改成autorelease,或者自己去释放
3.Object sent -autorelease too many times
Method returns an Objective-c object with a +0 retain count
定义对象为autorelease类型的,使用替代可以解决