iOS開發之Xcode的靜態分析(Static Code Analysis)與常見記憶體隱患解決辦法
一.Xcode Analyze靜態分析 Static Code Analysis
Static Code Analysis(靜態程式碼分析)用來發現原始碼潛在的錯誤與缺陷,原始碼編譯後只有在執行時有可能會產生細微的錯誤,他們可能難以識別和修復,所以這些潛在的威脅在開發過程中一定要儘可能清理乾淨,儘量編寫的時候注意類似可能潛在的威脅與缺陷
二.可以識別的問題與缺陷
1.邏輯缺陷,如訪問未初始化的變數和空指標
2.記憶體管理的缺陷,如分配後的記憶體洩漏
3.無效資料(未使用的變數)缺陷
4.使用api缺陷,不遵循庫或者框架的使用規則
三.開啟方式
1.Xcode頂部選單Product-->Analyze即可開啟
2.長按Xcode的run執行箭頭選擇Analyze即可開啟
3.cmd + shift + b 快捷鍵開啟
四.使用方法
1.左側問題導航選擇某一條藍色警告分析
2.點選右側原始碼編輯器的藍色訊息體
3.檢視錯誤跟蹤線
4.編輯程式碼修改錯誤
五.常見問題缺陷與解決辦法
1.Passed-by-value struct argument contains uninitialized data (e.g., via the field chain: 'origin.x')
錯誤:
1234567 | -(UIView*)test{CGRect |
正確:
1 2 3 4 5 6 7 | -(UIView*)test { CGRectrect=CGRectZero; UIView*view=[[UIViewalloc]init]; view.frame=rect; returnview; } |
2.Value stored to 'array' during its initialization is never read
變數申請了記憶體並初始化,但沒有使用此變數,接著將此變數又重新賦值
錯誤:
123 | NSMutableArray*array=[NSMutableArrayarray];array=[responseObject objectForKey:@"result"];..... |
正確:
1 2 | NSMutableArray*array=[responseObject objectForKey:@"result"]; ..... |
3.Value stored to 'array' is never read
變數'array' 未被使用
1 | __unused NSMutableArray*array=@[@"1",@"2"];//使用__unused或者註釋掉 |
4. The 'viewWillAppear:' instance method in UIViewController subclass 'TempViewController' is missing a [super viewWillAppear:] call
錯誤
1 2 3 | -(void)viewWillAppear:(BOOL)animated{ .... } |
正確
1234 | -(void)viewWillAppear:(
相關推薦iOS開發之Xcode的靜態分析(Static Code Analysis)與常見記憶體隱患解決辦法一.Xcode Analyze靜態分析 Static Code Analysis Static Code Analysis(靜態程式碼分析)用來發現原始碼潛在的錯誤與缺陷,原始碼編譯後只有在執行時有可能會產生細微的錯誤,他們可能難以識別和修復,所以這些潛在的威脅 iOS開發之Xcode常用除錯技巧總結轉載http://www.cocoachina.com/ios/20161102/17884.html 本文為投稿文章,作者:楊社兵 最近在面試,面試過程中問到了一些Xcode常用的除錯技巧問題。平常開發過程中用的還挺順手的,但你要突然讓我說,確實一臉懵逼。Debug的技巧 IOS開發之Xcode下LLDB除錯技巧_Debug_更改BOOL型別的值1.當在除錯中更改bool型別的值時,不能用NO和YES,要用true和false 2.如果有個字典userInfoDic { avatar = "", birthday = " iOS開發之Xcode自定義程式碼塊遷移本文介紹了程式碼塊遷移的過程. 背景:由於最近換了新的mac,所以,要做自定義程式碼塊的遷移. 一.Xcode中的程式碼塊. 二.開啟 Finder,快捷鍵Command + iOS開發之JSON格式數據的生成與解析添加 json intern 對象 RM use convert mail value 我們為什麽要用JSON格式的數據? JSON格式取代了xml給網絡傳輸帶來了很大的便利,但是卻沒有了xml的一目了然,尤其是json數據很長的時候,我們會陷入繁瑣復雜的數據節點查找中。 iOS開發之執行緒間的MachPort通訊與子執行緒中的Notification轉發如題,今天的部落格我們就來記錄一下iOS開發中使用MachPort來實現執行緒間的通訊,然後使用該知識點來轉發子執行緒中所發出的Notification。簡單的說,MachPort的工作方式其實是將NSMachPort的物件新增到一個執行緒所對應的RunLoop中,並給NSMachPort物件設定相應的代理。 iOS開發之淺談MVVM的架構設計與團隊協作1 // 2 // NetRequestClass.m 3 // MVVMTest 4 // 5 // Created by 李澤魯 on 15/1/6. 6 // Copyright (c) 2015年 李澤魯. All rights reserved. 7 iOS開發之關於Runtime執行時:類與物件Objective-C語言是一門動態語言,它將很多靜態語言在編譯和連結時期做的事放到了執行時來處理。這種動態語言的優勢在於:我們寫程式碼時更具靈活性,如我們可以把訊息轉發給我們想要的物件,或者隨意交換一個方法的實現等。 這種特性意味著Objective-C不僅需要一個編譯器,還需要一個執行時系統 ios開發之 -- 呼叫系統定位獲取當前經緯度與地理資訊在info.plist中加入: //允許在前臺使用時獲取GPS的描述 定位許可權:Privacy - Location When In Use Usage Description //允許永久使用GPS描述 定位許可權: Privacy - Location A iOS開發之多圖片無縫滾動元件封裝與使用正兒八經的圖片滾動的Demo我這兒還真沒有,今天呢就封裝一個可以在專案中直接使用的圖片輪播。沒看過其他iOS圖片無限輪播的程式碼,也不瞭解他們的原理,我今天封裝這個圖片無限輪播是借鑑Web前端中的做法,因為之前寫Web前端的時候,實現幻燈片就是這麼做的,今天就在iPhon iOS 開發之 FMDB 源碼分析lob nts st2 current pan mask 數據庫操作 數據庫 nbsp 概念: FMDB 是用於數據存儲的框架,它是 iOS 平臺下對 SQLite 數據庫的封裝。FMDB 是面向對象的,它以 OC 的方式封裝了 SQLite 的 C 語言 API, iOS開發之MAC的記憶體清理,Xcode清理此文章僅適用於適用於使用Xcode的開發者。 長期不清理Xcode中的一些檔案你會發現自己的mac硬碟越來越小,而且是這個其他佔了絕大部分的硬碟,在網上搜索了很多辦法都沒找到如何清理這些其他 後來來來回回在資料夾中找發現~/Library/Developer/Xcode這個Xcode資料夾大的驚 iOS開發之如何關閉Xcode控制檯的所有輸出一執行工程發現控制檯輸出一大堆內容,怎麼把它關掉呢。 1.原始的列印資料包括xcode列印的,第三方庫的,還有自己寫的 2.通過在pch裡,巨集定義把NSLog替換後發現少了很多自己寫的列印 #define NSLog(...) //NSLog(__VA_ARGS_ Xcode工程編譯錯誤之iOS開發之Xcode9報錯 Compiling IB documents for earlier than iOS7 is no longer supported.概要: 在我們升級到Xcode9時,最低的編譯版本為iOS8,但是在使用一些SDK的時候就會報出Compiling IB documents for earlier than iOS7 is no longer supported. 這句錯誤,這個時候我們點選錯誤跳轉到Xib或Storyboard中隨後 iOS開發之統計Xcode工程的程式碼行數1.開啟終端,用cd命令 定位到工程所在的目錄,如果需要統計某個資料夾的程式碼行數,則cd到當前資料夾下 2.呼叫以下命名即可把每個原始碼檔案行數及總數統計出來 find . "(" -name " iOS開發之蝦米音樂頻道選擇切換效果分析與實現今天部落格的內容比較簡單,就是看一下蝦米音樂首頁中頻道選擇的一個動畫效果的實現。之前用mask寫過另外一種Tab切換的一種效果,網易雲音樂裡邊的一種Tab切換效果,詳情請移步於""。,下面會對效果進行分析,並且根據自己的理解去實現一個類似的頻道選擇切換效果。程式碼會在Github上進行分享,Demo實現時依然 iOS開發之多種Cell高度自適應實現方案的UI流暢度分析本篇部落格的主題是關於UI操作流暢度優化的一篇部落格,我們以TableView中填充多個根據內容自適應高度的Cell來作為本篇部落格的使用場景。當然Cell高度的自適應網上的解決方案是鋪天蓋地呢,今天我們的重點不是如何討論Cell高度的自適應,而是給出幾種Cell高度自適應的解決方案,然後對比起UI流暢度,從 ios開發之靜態庫(.a)的生成及使用一、靜態庫定義: 在應用中,有些公共的程式碼需要反覆使用 的程式碼,希望隱藏程式碼的具體實現,可以把這部分程式碼做出靜態庫(.a檔案);如果提供庫的原始碼稱為開源庫(能看見.h也能看見.m檔案),不提供原始碼的庫稱為閉源庫(靜態庫,動態庫) 二、靜態庫的特 iOS開發之Crash日誌獲取與分析當在非除錯狀態下,我們用真機測試app,crash或者說閃退是一件很常見的事,最讓我們開發人員頭疼的是,自己在開發過程中總是不會遇到crash,安裝到別人的裝置,就出現了閃退崩潰現象。這種偶現的、概率比較低的閃退是最令人頭疼。 這時iOS crash log iOS開發之靜態庫(三)—— 圖片、介面xib等資原始檔封裝到.a靜態庫轉自:https://blog.csdn.net/mylizh/article/details/38707175編譯環境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3)一、首先將資原始檔打包成bundle新建 |