使用Xcode Analyze進行代碼靜態檢查

Xcode是一個非常強大的IDE,最近使用Xcode Analyze對代碼進行代碼靜態檢查,嚐到了不少甜頭。

運行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,

  1. [[NSMutableString alloc] init]  

->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

  1. @property (nonatomic, retain)   NSMutableString* content;         


建議修改方案:

  1. self.content = [[[NSMutableString alloc] init] autorelease];  


2、無效數據監測(Dead store)

無效數據如:Unused、Never read....這個比較簡單,就不貼代碼了!

3、邏輯錯誤監測(Logic error)

如上代碼,當Tag不等於1、2和3的時候,就會出現很問題了。len is a garbage value。建議在聲明變量時,同時進行初始化。


目前筆者在使用Xcode Analyze時,只發現了以上3鍾錯誤,後面如有新的發現,再添加上


手動內存管理內存的時候,要養成隨後把自己創建的對象安全釋放,忘的時候可以用這個Analyze幫助你查找可能內存泄露的地方

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章