swift中一些常見warning的原因和解決方法

最近在學習swift,在學習過程中經(jīng)常遇到一些系統(tǒng)的警告,因此在網(wǎng)上尋求大佬解答衙解,于是乎在@Soul丶凱少大佬的文章中尋得部分解答豁辉,分享給各位童鞋令野,希望能有所幫助

1.?Initialization of immutable value 'XXX' was never used; consider replacing with assignment to '_' or removing it.

  直譯:不可變量'XXX'的初始值并沒有用到;考慮下用'_'替代或移除它徽级。

  分析:直譯夠簡單明了了气破。我們可能在之前創(chuàng)建了一個變量/常量,賦予了它值并準備使用餐抢;然而我們由于種種原因并沒有用到這個值现使。出于對內(nèi)存優(yōu)化的考慮,系統(tǒng)提示我們使用或干掉它旷痕。

  解決方法:1.直接刪掉這個值(或者你可以注釋掉以防用到)碳锈;2.確認我們將來可能會用到這個值而暫時用不到,那就點一下黃色"warning"欺抗,系統(tǒng)會幫你替換為"_"售碳。


2.?'init(start:end:)' is deprecated: it will be removed in Swift 3. ?Use the '..<' operator.

  直譯:'XXX'已經(jīng)被廢棄了:它將在Swift 3時被移除。使用'XXX'方法绞呈。

  分析:當我們看到"is deprecated"的時候贸人,代表我們當前使用的屬性或方法被廢棄了。警告中一般帶有建議替換的方法或?qū)傩悦Q报强。替換就可以了灸姊。

  解決方法:點擊當前方法進入源文件,找到新的方法秉溉,分析新方法的使用方式后替換廢棄的方法力惯。


3.??Variable 'XXX' was never mutated; consider changing to 'let' constant

  直譯:變量'XXX'的值從未改變碗誉;考慮改變?yōu)?let'修飾的常量。

  分析:這是Swift中出現(xiàn)的錯誤父晶。我們在聲明一個值得時候哮缺,要同時聲明這個值為"var"變量或"let"常量。若聲明為變量而實際值未改變過時甲喝,會出現(xiàn)上述警告讓你改為"let"尝苇;若聲明為變量而值改變過時,會出現(xiàn)紅色報錯提示你改為"var"埠胖。

  解決方法:點擊黃色警告糠溜,在出現(xiàn)系統(tǒng)提示后回車即可替換。


4.?Use '#selector' instead of explicitly constructing a 'Selector'

  直譯:使用'#selector'代替明確的構(gòu)造一個'Selector'結(jié)構(gòu)體直撤。

  分析:這個也是Swift特有的問題非竿,不過我想說的'instead of'不是。一般這種情況的產(chǎn)生是因為語言版本的更新而造成了一部分語法的不同谋竖。使用'instead of'之前的方式即可红柱。

  解決方法:若可以,則直接點擊警告然后回車替換蓖乘。若不可以锤悄,則看警告信息知道要替換的語法后,自己替換嘉抒。


5.?The image set name "XXX" is used by multiple image sets.

  直譯:名稱為"XXX"的圖片組重復了零聚。

  分析:這個警告的意思是,你引入了兩個或多個相同名稱的圖片組众眨。一般發(fā)生在我們獲得新的切圖并放入工程之后握牧。

  解決方法:刪除重名的一組圖片,或?qū)⑵渲幸唤M圖片修改名字娩梨。


6.?The image set "XXX" has an unassigned child.

  直譯:名為"XXX"圖片的圖片組有一個不可同化的子圖片沿腰。

  分析:我們都知道iOS因為屏幕分辨率的問題,切圖一般有三套狈定,我們通過在一組圖片中的每張圖片后添加后綴@2x/@3x來區(qū)分每張圖片不同分辨率對應(yīng)的不同屏幕颂龙。但如果我們并沒有這樣命名,就會出現(xiàn)上述問題纽什。

  解決方法:將未設(shè)置分辨率比例的圖片設(shè)置一下措嵌,或者刪掉這個圖片。

7.?The image set "XXX" references a file "XXX.JPG", but that file does not have a valid extension.

  直譯:圖片組"XXX"涉及到了文件"XXX.JPG"芦缰,但是這個文件沒有一個正當?shù)臄U展名企巢。

  分析:iOS支持的圖片類型主要有"JPG, JPEG, GIF, PNG",這么看貌似也有"JPG"格式让蕾。但是iOS支持的擴展名都是小寫浪规。

  解決方法:將".JPG"改為".jpg"即可或听。

8.AppIcon.appiconset/logo_83.5.png is 84x84 but should be 167x167.

  直譯:App的標示圖片分辨率是84x84但是應(yīng)該是167x167。

  解決方法:放置合適分辨率的圖片笋婿。


9.?Warning: Multiple build commands for output file fanhui@2x.png

  直譯:當我們導出文件時出現(xiàn)了多樣的控制誉裆。

  分析:這個錯誤發(fā)生在我們直接將文件加入工程,而不是放在Assets.xcassets中的時候可能出現(xiàn)(對比上述第5個問題)缸濒,原因是我們重復放入了兩個相同名稱的圖片足丢。

  解決方法:刪掉一個圖片或者將其中一個圖片改名。


10.?Main.storyboard Frame for "XXX" will be different at run time.

  直譯:在"Main.storyboard"上的"XXX"控件的框架在運行時會與現(xiàn)在不一樣庇配。

  分析:這是因為我們在設(shè)置完成控件的約束后沒有Update Frames斩跌。

  解決方案:Update Frames就好。


11.?Unsupported Configuration: “View Controller“ is unreachable because it has no entry points, and no identifier for runtime access via -[UIStoryboard instantiateViewControllerWithIdentifier:].

  直譯:不支持的設(shè)置:"View Controller"是不能被取到的讨永,因為它沒有程序入口指針滔驶,也沒有標識符以供方法[UIStoryboard instantiateViewControllerWithIdentifier:]在運行時獲取。

  分析:相當于你創(chuàng)了一個UIViewController缺什么都沒設(shè)置卿闹。

  解決方案:干掉,或者起個標識符并使用萝快。


  目前尚有一些warning沒有解決锻霎,另外還有些第三方框架的警告沒有修改。不過已經(jīng)從150修改到27了揪漩。希望大家在寫代碼的時候遵循格式旋恼,不要無視警告,影響整個程序代碼的效率與整潔奄容。


12.Warning:

  程序一運行之后打印:objc[56768]: Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x1140fd998) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x113f1f880). One of the two will be used. Which one is undefined.

  原因很簡單冰更,你使用了<AssetsLibrary/AssetsLibrary.h>?( iOS9.0之后廢棄 ) 或者<Photos/Photos.h>?(iOS8.0之后可以使用)這兩個程序之一,并且你的程序的最低版本配置在8.0之上昂勒;或者你使用了其他兩個相同功能的蘋果官方framework蜀细。它的意思就是兩個類重名了,但是包含在兩個framework里面戈盈。

這個問題暫時無法避免奠衔,但是沒有關(guān)系不影響運行。PLBuildVersion在這兩個框架里都是一樣的塘娶,不影響實際運行归斤。


原址:https://www.cnblogs.com/SoulKai/p/5865175.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市刁岸,隨后出現(xiàn)的幾起案子脏里,更是在濱河造成了極大的恐慌,老刑警劉巖虹曙,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迫横,死亡現(xiàn)場離奇詭異鸦难,居然都是意外死亡,警方通過查閱死者的電腦和手機员淫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門合蔽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人介返,你說我怎么就攤上這事拴事。” “怎么了圣蝎?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵刃宵,是天一觀的道長。 經(jīng)常有香客問我徘公,道長牲证,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任关面,我火速辦了婚禮坦袍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘等太。我一直安慰自己捂齐,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布缩抡。 她就那樣靜靜地躺著奠宜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞻想。 梳的紋絲不亂的頭發(fā)上压真,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音蘑险,去河邊找鬼滴肿。 笑死,一個胖子當著我的面吹牛漠其,可吹牛的內(nèi)容都是我干的嘴高。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼和屎,長吁一口氣:“原來是場噩夢啊……” “哼拴驮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起柴信,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤套啤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潜沦,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡萄涯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了唆鸡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涝影。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖争占,靈堂內(nèi)的尸體忽然破棺而出燃逻,到底是詐尸還是另有隱情,我是刑警寧澤臂痕,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布伯襟,位于F島的核電站,受9級特大地震影響握童,放射性物質(zhì)發(fā)生泄漏姆怪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一澡绩、第九天 我趴在偏房一處隱蔽的房頂上張望稽揭。 院中可真熱鬧,春花似錦英古、人聲如沸淀衣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛮浑,卻和暖如春唠叛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沮稚。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工艺沼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蕴掏。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓障般,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盛杰。 傳聞我的和親對象是個殘疾皇子挽荡,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355