去除xcode的編譯警告

2021-07-09 05:23:28 字數 1936 閱讀 2320

在使用xcode進行iphone應用開發時,經常需要新增一些第三方的類庫,而一些第三方的類庫由於缺少維護,從而導致類庫中含有各種警告和各種記憶體洩漏,但並不影響執行.

倘若我們需要用到第三方庫,而由不想在**分析時看到這些庫的警告或記憶體洩漏,我需要這樣做:

[cpp]view plain

copy

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-wincompatible-pointer-types"

//含警告的**,如下,btn為uibutton型別的指標

uiview *view = btn;  

#pragma clang diagnostic pop

「-wincompatible-pointer-types」為警告型別

clang為編譯器名,這裡也可以替換為gcc

#pragma clang diagnostic ignored後面只能跟乙個忽略警告型別

如果需要同時忽略多種警告,需要這樣寫:

[cpp]view plain

copy

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-wincompatible-pointer-types"

#pragma clang diagnostic ignored "-wincomplete-implementation"

//含警告的**,如下,btn為uibutton型別的指標

uiview *view = btn;  

#pragma clang diagnostic pop

另外使用xcode的analyze進行**分析時,xcode會檢查出程式的記憶體洩漏,這個不屬於編譯警告,我們需要新增乙個巨集來把這些**忽略:

[cpp]view plain

copy

#ifndef __clang_analyzer__

//含記憶體洩漏的**

#endif

ios上的開源正則擴充套件類 regexkitlite 就是乙個充滿各種記憶體洩漏的類,儘管作者已經在該類上注釋說可以忽略這些記憶體洩漏的提示,但作為乙個有**潔癖的程式設計師,我還是不想看到這些記憶體洩漏的警告提示.

[cpp]view plain

copy

//已知的一些編譯警告型別

-wincompatible-pointer-types 指標型別不匹配  

-wincomplete-implementation 沒有實現已宣告的方法  

-wprotocol 沒有實現協議的方法  

-wimplicit-function-declaration 尚未宣告的函式(通常指c函式)  

-warc-performselector-leaks 使用performselector可能會出現洩漏(該警告在xcode4.3.1中沒出現過,網上流傳說4.2使用performselector:withobject: 就會得到該警告)  

-wdeprecated-declarations 使用了不推薦使用的方法(如[uilabel setfont:(uifont*)])  

-wunused-variable 含有沒有被使用的變數  

警告**查詢方法如下圖:

關於Xcode警告

大多數警告 warning 其實不一定影響專案功能,但是警告太多容易隱藏一些真正需要解決的問題,而且考慮有些朋友的強迫症,xcode的警告都是可以關閉的,出了直接的setting裡治標不治本的設定外,更應該根據編譯器的提示去真正解決它,這樣的過程對更了解編譯器也是有些幫助的。implementing...

xcode 消除警告

專案中引用大量的第三方 時,這些 很複雜,不要輕易去改動它,如果編譯產生很多警告,該如何消除呢?1.最直接 最一勞永逸 最安全的方式,直接找到警告的那段 改為不警告。這個方式最安全。可是它有乙個問題,就是,當我們很多檔案都有這種型別的警告的時候,我們就需要改動很多很多的原始碼了,對於不是我們寫的原始...

Xcode 消除警告

在維護公司老專案的時候,因為很早以前開發的,專案能跑起來。但是公司已經不希望在上面花費時間,或多或少都會出現不少的警告。但是對於我絕對不忍受警告的出現,就想關閉它。以下是一下警告關閉的常規方法,希望能給後繼開發者一些幫助!1.遇到之前非arc的專案 遇到非arc寫的sdk,而自己專案是arc。點選p...