亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS警告收錄及科學快速的消除方法

2019-11-14 18:25:18
字體:
來源:轉載
供稿:網友

  

前言:現在你維護的項目有多少警告?看著幾百條警告覺得心里煩么?你真的覺得警告又不是錯誤可以完全不管么? 如果你也被這些問題困惑,可以和我一起進行下面的操作。其實大部分的警告都是很好改的,把自己整個項目的警告擼一遍應該也就耗費半小時的時間,一次麻煩帶來之后的清凈這樣不好么?

本文分為三個部分:1.簡單粗暴的消除警告。 2.詳細科學的消除警告。(包括警告收錄)  3.添加警告。

如果你不是在董鉑然博客園看到本文,請點擊查看原文。

一、簡單粗暴的消除警告

警告如果是自己項目中的還好直接改了,如果是第三方庫,你改了之后,pod下作者更新一下又白改了,所以可以用這種簡單粗暴的方法:直接讓第三方庫的警告不顯示

 就是在podfile文件里面加上一行指令 。 

inhibit_all_warnings!

 

如果某警告實在無法消除,但是又不想讓他顯示,可以加入預編譯指令

比如我已經知道某行會報上面警告了,我就用這個宏把這幾行包住,就不會報引號中-Wunused-variable的警告了

#PRagma clang diagnostic push#pragma clang diagnostic ignored"-Wunused-variable"               //這里是會報警告的代碼#pragma clang diagnostic pop

這個-Wunused-variable代表的意思就是 有的東西 你實例化了但是沒有使用(同上面第幾條)。 但是如何得到一個警告的標示符?

如圖選擇一個警告,點擊右鍵,reveal in log  就能看到右邊有個方括號[]里面的東西就是 這個警告對應的標示符

 

如果希望整個項目中都忽略 某種很無聊的警告,就在項目中Build Setting里加上這個標示符,可以連著加的。

如果不想整個項目都忽略,只想個別文件忽略,那就找到個別文件加上此指令,這個操作應該使用率不高(一般都是全項目忽略),就不上圖了。去Build Phases 里面的 Compile Sources里面改。

 

二、詳細科學的消除警告

其實筆者本意是想把一些第一眼看不懂比較坑的警告收錄進來,但是后來發現那基本沒幾個需要些寫了,所以就采用了全收錄的方法,遇到的就記錄下以后也會不斷更新。 可以直接按command+F 在本頁面搜索警告

 

Unused variable 'replyURL'

1.沒有使用

 

Cannot find protocol definition for 'TencentsessionDelegate'

2.這種明明都能運行還說我沒有定義的警告,是因為你這個協議雖然定義了,但是你這個協議可能還遵守了XX協議,然后這個XX協議沒有定義導致會報這種警告,所以遇到這種警告要往“父協議”找。 舉個栗子,上面這行就是騰訊授權的庫里面報的警告,

@protocol TencentSessionDelegate<NSObjectTencentLoginDelegateTencentApiInterfaceDelegateTencentWebViewDelegate>

此協議遵守了TencentApiInterfaceDelegate協議,在TencentOAuth.h類中#import "TencentApiInterface.h" 警告可破

 

 Null passed to a callee that requires a non-null argument

3.這個警告比較新,是xcode6.3開始 為了讓OC也能有swift的?和!的功能,你在聲明一個屬性的時候加上 __nullable(?可以為空)與__nonnull(!不能為空) 如果放在@property里面的話不用寫下劃線

@property (nonatomiccopynonnullNSString * tickets;

@property (nonatomiccopyNSString__nonnull tickets;

或者用宏NS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_END 包住多個屬性全部具備nonnull,然后僅對需要nullable的改下就行,有點類似于f-no-objc-arc那種先整體給個路線在單獨改個別文件的思想。 此警告就是某屬性說好的不能為空,你又在某地方寫了XX = nil 所以沖突了。

 

Auto property synthesis will not synthesize property 'privateCacheDirectory'; it will be implemented by its superclass, use @dynamic to acknowledge intention

4.他說你的父類實現了setget方法,但是如果你什么都不寫,就會系統自動生成出最一般的setget方法,請用@dynamic 來承認父類實現的這個getset方法。

 

Unsupported Configuration: Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier:.

5.一般是storyboard報的警告,簡而言之就是你有的頁面沒有和箭頭所指的控制器連起來,導致最終改頁面可能無法顯示。

Deprecated: Push segues are deprecated in iOS 8.0 and later

6.iOS8之后呢,不要再用push拖線了,統一用show,他會自己根據你是否有導航欄來判斷走push還是走modal

 

Unsupported Configuration: Plain Style unsupported in a Navigation Item 

7.導航欄的item 不支持用plain ,那就用Bordered唄。

 

 The launch image set "LaunchImage" has 2 unassigned images.

 The app icon set "AppIcon" has 2 unassigned images.

8.幾張圖標還是啟動圖找不到自己的位置,可能是一次導入了全部尺寸圖片,但是右邊的設置只勾了iOS8的 那iOS7尺寸的圖標就會報此警告。刪掉,或者對照右邊匹配。

 

'sizeWithFont:constrainedToSize:lineBreakMode:' is deprecated: first deprecated in iOS 7.0 - Use -boundingRectWithSize:options:attributes:context:

9.方法廢除,舊的方法sizeWithFontToSize在iOS7后就廢除了取而代之是boundingRectWithSize方法

 

 Undeclared selector 'historyAction'

10.使用未聲明的方法,一般出現在@selector() 括號里寫了個不存在的方法或方法名寫錯了。

PerformSelector may cause a leak because its selector is unknown

11.這個和上面類似就是直接把上面那個@SEL拿來用會報這個警告

 

 'strongify' macro redefined

12.這個宏聲明重復,刪一個吧

 

 'UITextAttributeFont' is deprecated: first deprecated in iOS 7.0 - Use NSFontAttributeName

 'UITextAttributeTextColor' is deprecated: first deprecated in iOS 7.0 - Use NSForegroundColorAttributeName

 'UITextAttributeTextShadowColor' is deprecated: first deprecated in iOS 7.0 - Use NSShadowAttributeName with an NSShadow instance as the value

13.方法廢除,一般一起出現

 

 Code will never be executed

14.他說這代碼永遠也輪不到他執行,估計是有幾行代碼寫在了return之后

 

 Assigning to 'id<SXTableViewDelegate>' from incompatible type 'SXTabViewController *const __strong'

15.一般出現在xxx.delegate = self ,應該在上面遵守協議

 

 Format specifies type 'unsigned long' but the argument has type 'unsigned int

16.這個警告一般會出現在NSStringWithFormat里面 前面%d %lu 什么的和后面填進去的參數不匹配就報了警告

Values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead

17.類似于上面,也是format里面前后寫的不匹配

 

Method 'dealWithURL:andTitle:andKeyWord:' in protocol 'SXPostAdDelegate' not implemented

18.經典警告,遵守了協議,但是沒有實現協議方法。 也可能你實現了只是又加了個參數或是你寫的方法和協議方法名字有點輕微不同

 

Using integer absolute value function 'abs' when argument is of floating point type

19.這個可以自動修正,就是說abs適用于整數絕對值,要是float取絕對值要用fabsf

 

 Attribute Unavailable: Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0

20.有的方法你用的太落后了,也有的方法你用的太超前了。 說這個最大寬度在iOS8之前的系統是要坑的

 

 Too many personality routines for compact unwind to encode

21.你可以在otherlink 中加入 -Wl,-no_compact_unwind 去掉該警告,根據蘋果的解釋,這個是由于某些地方 c/c++/oc/oc++混用會造成編譯警告。一般沒有什么傷害。

 

Property 'ssid' requires method 'ssid' to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation

22.說這個ssid必須要定義個這個屬性的getter方法,如果警告是setSsid就是setter方法, 用@synthesize和@dynamic 都行,一個是讓編譯器生成getter和setter,一個是自己生成,如果你有模型分發或kvc之類的,選@dynamic就行

 

 Unknown escape sequence '/)'

23.未知的轉義序列。 一般有個斜杠再加個東西他都會以為是轉義字符,一看/)不認識就報警告了,一般正則表達式容易報這種警告

 

Property 'LoginPort' not found on object of type 'LoginLvsTestTask *'; did you mean to access property loginPort?

24.這種可以點擊自動修復,是典型的大小寫寫錯了,他提醒了一下。

 

Variable 'type' is used uninitialized whenever switch default is taken

25.這是出現在switch語句中的警告, 一般可能是switch外面定義了個type但是并沒有初始化(初始化操作都寫在switch的各個分支里),然后在最后return type。 但是switch的有個分支沒有對type初始化,他說如果你來到這個分支的話,那還沒初始化就要被return。

 

三、添加警告

1.首先最常用的就是 普通警告,這也沒什么好說的了

#warning TODO

2.如果是自己寫的文件或第三方庫,有了新的接口,然后提示舊的接口廢除的話需要在方法后加上宏NS_DEPRECATED_IOS和范圍

- (void)addTapAction:(SEL)tapAction target:(id)target NS_DEPRECATED_IOS(2_0, 4_0);

3.如果需要在此方法后加上帶信息的警告則需要這么寫

- (void)addTapAction:(SEL)tapAction target:(id)target __attribute((deprecated("這個接口會爆內存 不建議使用")));

顯示的效果像這樣:

 

 

如果你不是在董鉑然博客園看到本文,請點擊查看原文。轉載請注明出處!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品电影| 日韩电视剧在线观看免费网站| 久久亚洲私人国产精品va| 久久99精品视频一区97| 欧美性xxxxx极品| 欧美激情国内偷拍| 日韩在线观看免费全集电视剧网站| 亚洲女同性videos| 亚洲欧美国内爽妇网| 亚洲一区二区三| 国产精品精品国产| 欧美视频在线看| 精品视频在线观看日韩| 欧美成aaa人片免费看| 午夜精品免费视频| 久久精品视频网站| 国产成人自拍视频在线观看| 97国产在线视频| 日韩经典中文字幕在线观看| 国产精品久久久久99| 日韩国产欧美精品一区二区三区| 欧美日韩一区二区免费视频| 欧美亚洲日本黄色| 国产成人精品在线播放| 国产精品高清免费在线观看| 亚洲女人被黑人巨大进入| 国产精品黄色av| 欧美日韩国产成人高清视频| 久久人91精品久久久久久不卡| 久久久久久国产精品三级玉女聊斋| 国产欧美精品日韩精品| 欧美成人免费小视频| 精品一区精品二区| 欧美精品第一页在线播放| 亚洲第一精品夜夜躁人人爽| 久久久天堂国产精品女人| 欧美日韩一区二区免费在线观看| 国产精品久久久av久久久| 久久精视频免费在线久久完整在线看| 第一福利永久视频精品| 国产亚洲人成网站在线观看| 欧美性xxxxx| 日韩69视频在线观看| 欧美一区二区三区艳史| 成人免费在线网址| 亚洲人成人99网站| 国产精品久久久久久网站| 国产91色在线免费| 欧美激情va永久在线播放| 精品久久久久久国产| 国产精品自产拍在线观看| 国产精品老女人视频| 国产精品青青在线观看爽香蕉| 日韩黄色av网站| 精品国产一区二区在线| 精品人伦一区二区三区蜜桃网站| 亚洲人成网在线播放| 国产精品成人一区二区三区吃奶| 亚洲国产精品网站| 国产午夜精品麻豆| 欧美视频免费在线| 亚洲国产精品久久久久久| 国产精品稀缺呦系列在线| 成人疯狂猛交xxx| 亚洲网址你懂得| 成人黄色中文字幕| 中文字幕日韩精品在线观看| 欧美国产日韩免费| 国产精品美女免费| 日韩电影中文字幕| 精品国产鲁一鲁一区二区张丽| 精品国产一区二区三区久久久狼| 精品精品国产国产自在线| 国产视频精品va久久久久久| 久久亚洲国产精品| 永久555www成人免费| 亚洲一区二区三区在线视频| 97在线看免费观看视频在线观看| 久久精品99无色码中文字幕| 亚洲人成五月天| 日韩精品极品在线观看| 91国产一区在线| 日韩人在线观看| 91在线看www| 日韩视频免费大全中文字幕| 欧美激情成人在线视频| 亚洲www永久成人夜色| 欧美国产高跟鞋裸体秀xxxhd| 亚洲精品av在线| 中文字幕精品www乱入免费视频| 国产成人精彩在线视频九色| 亚洲激情视频在线| 日韩免费视频在线观看| 日本国产精品视频| 欧美中文在线免费| 97在线精品国自产拍中文| 国产精品久久网| 亚洲欧美一区二区三区情侣bbw| 日韩成人在线网站| 久久999免费视频| 97婷婷涩涩精品一区| 97久久久久久| 在线激情影院一区| 成人免费视频在线观看超级碰| 亚洲自拍偷拍在线| 深夜成人在线观看| 欧美高清视频一区二区| 欧美精品中文字幕一区| 亚洲国产古装精品网站| 韩剧1988免费观看全集| 欧美做受高潮电影o| 日韩在线视频免费观看高清中文| 欧美国产亚洲精品久久久8v| 97视频在线观看免费高清完整版在线观看| 国产一区二区三区在线看| 91香蕉嫩草神马影院在线观看| 国产999精品| 成人在线小视频| 久久视频免费观看| 欧美第一黄色网| 91精品国产乱码久久久久久久久| 中文字幕亚洲欧美日韩在线不卡| 久久久久久久影视| 成人免费看吃奶视频网站| 精品久久久香蕉免费精品视频| 日韩经典中文字幕| 国模叶桐国产精品一区| 国产精品成人v| 国产精品久久久av久久久| 成人免费网站在线看| 亚洲国产精品美女| 日韩一级黄色av| 精品国模在线视频| 69久久夜色精品国产69乱青草| 成人xvideos免费视频| 97福利一区二区| 精品成人69xx.xyz| 福利微拍一区二区| 亚洲在线免费看| 日日噜噜噜夜夜爽亚洲精品| 亚洲国产一区二区三区在线观看| 国产精品美女免费看| 日韩成人中文字幕| 亚洲天堂免费观看| 中文字幕亚洲欧美一区二区三区| 97热在线精品视频在线观看| 97精品一区二区视频在线观看| 在线日韩欧美视频| 久久亚洲电影天堂| 国产精品视频xxx| 国产精品永久免费观看| 九九热r在线视频精品| 久久人人爽人人| 欧美中文在线观看国产| 国色天香2019中文字幕在线观看| 日韩欧美在线视频日韩欧美在线视频| 欧美电影《睫毛膏》| 欧美极品在线视频| 91香蕉国产在线观看| 日韩av片电影专区| 国产成人久久精品| 久久精品99国产精品酒店日本| 91高清视频免费观看| 国产精品一区二区三区在线播放|