1. 程式人生 > >iOS開發——Xcode Analyze靜態分析

iOS開發——Xcode Analyze靜態分析

     Xcode Analyze  程式碼靜態分析主要有以下作用:

     記憶體洩漏(未釋放的佔記憶體的無用殭屍物件)

      程式碼邏輯問題 (訪問空指標或未初始化的變數等)

     宣告錯誤或無效資料及變數(從未使用過的變數等)

     API呼叫錯誤(未包含使用的庫和框架)

      執行Xcode中Analyze方法Product---->Analyze    分析後的以下幾種狀況:

 1. 記憶體洩漏

情況1



    提示資訊:  Potential leak of an object    問題出在62行處

     點選雙向箭頭提示如下資訊:


>1. Method returns an Objective-C object with a +1 retain count

alloc一個物件的時候,其記憶體計數(retain count)+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

@property (nonatomic, retain)   NSMutableString* content; 


解決措施:修改為self.content = [[[NSMutableString alloc] init] autorelease];

情況2

http://static.open-open.com/lib/uploadImg/20150302/20150302220341_450.png

註釋掉CGImageRelease(imagRef)會導致imageRef物件洩漏。CG開頭的是C語言的

2.程式碼邏輯問題(Logic error)


解決措施:

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


3、無效資料監測(Dead store)

無效資料如:Unused、Never read....未使用個變數等,這個一般開發的時候也會有黃色警告
解決措施:刪除或者修改錯誤問題


4、API呼叫錯誤


NS_DESIGNATED_INITIALIZER

子類沒有重寫父類的所有初始化函式,而使用者恰好直接使用父類的初始化函式初始化物件,那麼子類的成員變數就可能存在沒有正確初始化的情況。

由於:

  • 便利初始化函式只能呼叫自己類中的其他初始化方法
  • 指定初始化函式才有資格呼叫父類的指定初始化函式
所以當我們為自己建立的類新增指定初始化函式時,必須準確的識別並覆蓋直接父類所有的指定初始化函式,這樣才能保證整個子類的初始化過程可以覆蓋到所有繼承鏈上的成員變數得到合適的初始化。

相關推薦

iOS開發——Xcode Analyze靜態分析

     Xcode Analyze  程式碼靜態分析主要有以下作用:      記憶體洩漏(未釋放的佔記憶體的無用殭屍物件)       程式碼邏輯問題 (訪問空指標或未初始化的變數等)      宣告錯誤或無效資料及變數(從未使用過的變數等)     

iOS效能優化 Analyze靜態分析和Instruments效能監測

一:Analyze靜態分析 App進行Build或Archive時,會產生很多編譯警告,這些警告是編譯時產生的,靜態分析的過程也類似,在XCode Product選單下,點選Analyze對App進行靜態分析。  Analyze主要分析以下四種問題:

iOS開發 Xcode使用Analyze靜態分析

一.Analyze簡介: 我們可以使用Xcode自帶的靜態分析工具 Product->Analyze(快捷鍵command+shift+B)可以找出程式碼潛在錯誤,如記憶體洩露,未使用函式和變數,迴圈引用等 所謂靜態記憶體分析, 是指在程式沒執行的時候, 通過工

iOS開發Xcode靜態分析(Static Code Analysis)與常見記憶體隱患解決辦法

一.Xcode Analyze靜態分析 Static Code Analysis Static Code Analysis(靜態程式碼分析)用來發現原始碼潛在的錯誤與缺陷,原始碼編譯後只有在執行時有可能會產生細微的錯誤,他們可能難以識別和修復,所以這些潛在的威脅

iOS開發-Xcode Debug、Release、Archive、Profile、Analyze概念解釋

1,Debug和Release版本區別? 眾所周知,我們進行iOS開發,在Xcode除錯程式時,分為兩種方式,Debug和Release,在Target的Setting中相信大家應該看到很多選項都分為Debug和Release,方便我們分別設定,滿足除錯和釋出的不同

Xcode執行Analyze靜態分析

使用Xcode自帶的靜態分析工具 Product->Analyze(快捷鍵command+shift+B)可以找出程式碼潛在錯誤,如記憶體洩露,未使用函式和變數等 所謂靜態記憶體分析, 是指在程式沒執行的時候, 通過工具對程式碼直接進行分析 根據程式碼的上下文的語法結構, 讓編譯器分析記憶體情況, 檢

iOS開發 Xcode叠代問題

系統 操作 xcod 出現 spa setting image http code 這個問題主要出現在Xcode主版本升級產生的, 我是在Xcode9升級到Xcode10預見的, 碰到這個問題你需要如下操作: 1. 打開你的workspace, 找到File-&

6.5 使用CoreImage框架給圖片新增馬賽克效果 [原創iOS開發-Xcode教程]

1. 在歡迎視窗右側的歷史專案列表中,雙擊開啟之前建立的單檢視專案模板。 2. 本節課將為您演示,如何使用影象處理框架,給圖片新增畫素化濾鏡效果。首先在一個空白專案中,開啟檢視控制器的程式碼檔案。 3. 接著開始編寫程式碼,實現這項功能。 4. 首先匯入需要用到的框架。 5.

3.2 UITabBarController檢視控制器 [原創iOS開發-Xcode教程]

1. 本節課將為您演示,選項卡檢視控制器的建立和使用。首先在歡迎視窗中,點選[建立一個新專案]選項,建立一個新的專案。 2. 選擇建立一個簡單的單檢視應用。 3. 點選下一步按鈕,進入下一步設定頁面。 4. 在產品名稱輸入框內,點選輸入產品的名稱。 5. 點選下一步按鈕,進入

3.1 使用UIScrollView展示多個檢視控制器 [原創iOS開發-Xcode教程]

1. 本節課將為您演示多檢視控制器的使用。首先在歡迎視窗中,點選[建立一個新專案]選項,建立一個新的專案。 2. 選擇建立一個簡單的單檢視應用。 3. 點選下一步按鈕,進入下一步設定頁面。 4. 在產品名稱輸入框內,點選輸入產品的名稱。 5. 保持其它引數不變,點選下一步按鈕

iOS開發:dSYM檔案分析

       專案開發過程中,使用了友盟統計,就能在友盟給出的錯誤資訊統計中,能比較方便的找出客戶端異常的資訊,但是很多像陣列越界卻只給出了 *** -[__NSArrayM objectAtIndex:]: index 50 beyond bounds [0 .. 39]

iOS開發Xcode的圖片管理(Images.xcassets)

一、首先,在iOS來法中使用的圖片格式主要是JPG和PNG兩種格式         (1)JPG: 壓縮比比較高,通常用於照片、網頁,屬於有失真壓縮(噪點)。解壓縮時,對CPU消耗大,意味慢,費電。          (2)PNG:壓縮比較高,無失真壓縮,  解壓縮效率高,

1.17 程式碼的查詢和替換 [原創iOS開發-Xcode教程]

1. 本節課將為您演示,如何查詢和替換指定的程式碼。首先雙擊開啟之前建立的專案模板。 2. 然後開啟檢視控制器的程式碼檔案。 3. 開啟頂部選單欄中的查詢選單。 4. 點選查詢和替換子選單。 5. 然後在替換面板中,輸入要查詢的關鍵詞。 6. 現在的程式碼編輯區,已經通過高亮

3.3 UINavigationController檢視控制器 [原創iOS開發-Xcode教程]

1. 本節課將為您演示,導航檢視控制器的使用。首先在歡迎視窗中,點選[建立一個新專案]選項,建立一個新的專案。 2. 選擇建立一個簡單的單檢視應用。 3. 點選下一步按鈕,進入下一步設定頁面。 4. 在產品名稱輸入框內,點選輸入產品的名稱。 5. 點選下一步按鈕,進入下一步設

[iOS開發]Xcode自動註釋外掛:VVDocumenter使用和安裝

Xcode自動註釋外掛:VVDocumenter使用和安裝 開源外掛: VVDocumenter 下載地址: https://github.com/onevcat/VVDocumenter-Xcode 使用方法: 在方法寫///,效果同上圖,下面有方法可以

1.3 使用資原始檔夾匯入並管理圖片素材 [原創iOS開發-Xcode教程]

1. 本節課將為您演示如何使用資原始檔夾,匯入並管理圖片資源。首先雙擊開啟之前建立的專案模板。 2. 資原始檔夾可以方便您進行圖片管理,在讀取圖片時,不需要加上圖片名的字尾。同時還可以提高軟體的安全性, 因為它會將圖片進行加密和壓縮。 3. 點選底部的加號圖示,開啟資原始檔夾

使用Analyze靜態分析程式碼

在Xcode的工具欄中,有一個Product,Product裡面的工具,可以說是Xcode中比較強大的,工程效能的調優都依賴於這些。 這篇就簡單說下Analyze,畢竟現在都用ARC開發,如不使用C

IOS開發中合併靜態

在xcode開發中經常會使用到一些三方的靜態庫,比如百度地圖SDK。然而在使用過程中會發現如果直接把os和simmulator裡面的兩個靜態庫拖進專案中會導致不能執行。所以只能在使用真機的時候新增os下的.a檔案 在使用模擬器的時候新增simulator下的.a檔案。這樣就

iOS 靜態分析Analyze

Analyze靜態分析.png 快捷方式 : command + shift + b Analyze 靜態分析分析以下4個問題: 1、邏輯錯誤; 2、記憶體管理錯誤; 3、宣告錯誤; 4、API 呼叫錯誤; 因為1、3、4在編譯過程都會有警告,Analyze的主要優勢在於靜態分析記憶體洩露及部分程式碼

從零開始學習iOS開發1:認識xcode

連接 啟動圖標 主動 認識 tor 音樂 滴滴打車 啟動 and 在開始之前還是不得不提一下iPhone應用開發的工具,我當然之前是沒接觸過iPhone開發,也沒使用過apple的不論什麽一種設備。所以我的概念中僅僅知道xcode是最專業的iOS開發工具。如今它是免費