Xcode跑老項(xiàng)目運(yùn)行慢內(nèi)存一直暴漲一直未響應(yīng)

前言

年前時(shí)候接手了一個(gè)五六年前的老項(xiàng)目,有一些問(wèn)題已經(jīng)解決了,之前在老版本的Xcode上面運(yùn)行也還能接手脆烟,一兩分鐘運(yùn)行起來(lái),現(xiàn)在切換到Xcode 15上面運(yùn)行房待,調(diào)試邢羔,每一次真的是要命,運(yùn)行5,6,7,8十來(lái)分鐘吴攒,巨慢张抄,警告六七萬(wàn)個(gè),內(nèi)存動(dòng)輒十幾二十幾G洼怔,Mac內(nèi)存經(jīng)常發(fā)出不足警告,高峰時(shí)三十多G左驾,實(shí)在是不能忍受镣隶,嚴(yán)重影響開(kāi)發(fā)效率,傷Mac诡右。

溫馨提示

如果著急不用看前面的解決歷程安岂,直接看最后的終極解決方案——Xcode 消除各種警告

目前問(wèn)題現(xiàn)狀

image.png

很多這個(gè)警告:

Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

警告

因?yàn)檫@個(gè)項(xiàng)目里面引用的庫(kù)帆吻,太多域那,還有第三方的項(xiàng)目,亂七八糟猜煮,啥都有次员,導(dǎo)致現(xiàn)在越來(lái)越慢,重復(fù)的東西太多王带,還不能亂改淑蔚,牽一發(fā)而動(dòng)全身。

解決歷程

針對(duì)這個(gè)問(wèn)題愕撰,網(wǎng)上一通找刹衫,其實(shí)已經(jīng)多次試圖解決這個(gè)問(wèn)題,但始終沒(méi)有找到切實(shí)可行的方法搞挣,
網(wǎng)上大概的解決方法:

  1. 打開(kāi)File---workspace setting...---Build System:選擇Legacy Build System带迟。
    老項(xiàng)目還是用老的編譯系統(tǒng)吧。
image.png

但是很可惜囱桨,新版本的Xcode已經(jīng)沒(méi)有這個(gè)選項(xiàng)了

image.png
  1. 還有說(shuō)是發(fā)現(xiàn)組件內(nèi)的所有文件在編譯的時(shí)分都會(huì)有幾個(gè)相似的正告仓犬。

這些正告來(lái)自同一個(gè)文件,通過(guò)pch文件引證蝇摸。

有正告的文件是是很早以前建立的婶肩,文件里邊沒(méi)有自動(dòng)生成NS_ASSUME_NONNULL_BEGIN文件內(nèi)大概有很多個(gè)正告办陷。在編譯文件的時(shí)分,這些警告都會(huì)去做緩存律歼、分析民镜。導(dǎo)致運(yùn)行起來(lái)十分卡頓。

給出的處理方法:
消除警告险毁,從頭編譯制圈,發(fā)現(xiàn)項(xiàng)目跑起來(lái)十分的酣暢!

如果是有其他第三方庫(kù)或許組件的警告畔况,能夠在Podfile中添加 :inhibit_warnings => true 來(lái)防止編譯的時(shí)分查看警告鲸鹦。這種方式也會(huì)加速編譯速度。

在Podfile文件里面都加了跷跪,重新pod install馋嗜,然并卵。

  1. 針對(duì)這個(gè)問(wèn)題:
    Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

在項(xiàng)目中的類(lèi)中基本上都加了:

NS_ASSUME_NONNULL_BEGIN

NS_ASSUME_NONNULL_END
也沒(méi)有什么用吵瞻,依舊還是很慢丸冕,

  1. 可能跟3這個(gè)有關(guān)系烹植,最近太忙铛漓,沒(méi)時(shí)間來(lái)搞這個(gè)拜效,等等再說(shuō)。

階段性小結(jié)——

以上這些方法都是然并卵卿泽,基本沒(méi)有任何效果莺债,目前還沒(méi)有解決我的問(wèn)題,發(fā)揮大家的力量签夭,有類(lèi)似解決的提供一下解決方法齐邦,不勝感激。

終極解決方案——Xcode 消除各種警告

簡(jiǎn)單粗暴覆致,直接消除警告侄旬,項(xiàng)目里面的警告是在是太多,一個(gè)一個(gè)的改煌妈,要改到天荒地老儡羔,要吐血。

首先點(diǎn)擊這個(gè)警告璧诵,右鍵->reveal in log就能看到警告的詳細(xì)描述汰蜘,就能看到[]里面的字符就是警告對(duì)應(yīng)的標(biāo)識(shí)符。

如果Reveal in Log不可點(diǎn)擊或者點(diǎn)擊無(wú)效之宿,可以重新編譯或者重啟下Xcode

比如 Implicit conversion loses integer precision: ‘NSInteger’ (aka ‘long’) to ‘int32_t’ (aka ‘int’) 警告 顯示的就是 -Wno-shorten-64-to-32族操。其中 -W是前綴,這個(gè)前綴表示的是 打開(kāi)這種類(lèi)型的警告 如果我們是要關(guān)閉某種類(lèi)型的警告的話, 要將 -W換成 -Wno- ,也就是 -Wno-shorten-64-to-32。

  1. 如果整個(gè)項(xiàng)目都不想顯示這個(gè)警告色难,就可以在Build Setting里加上這個(gè)標(biāo)示符泼舱,Build Setting里搜索Other Warning Flags里添加關(guān)閉警告的命令。

  2. 如果只是針對(duì)某個(gè)文件不想顯示這個(gè)警告枷莉,則可以Build Phases->Compile Sources下找到相應(yīng)的文件在Compiler Flags下面加上命令即可娇昙。如果只是針對(duì)一段代碼不顯示某個(gè)警告,可以加上如下代碼

#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wunused-variable"

//這里是會(huì)報(bào)警告的代碼

#pragma clang diagnostic pop

如果不想顯示通過(guò)cocoapod導(dǎo)入的第三方庫(kù)的警告笤妙,則可以直接在Podfile文件里加入inhibit_all_warnings!冒掌,加在platform下面就可以。

忽略警告類(lèi)型

忽略警告類(lèi)型

-Wno-nullability-completeness
-Wno-shorten-64-to-32
-Wno-arc-performSelector-leaks
-Wno-deprecated
-Wno-nonnull
-Wno-undeclared-selector
-Wno-objc-property-synthesis
-Wno-deprecated-declarations
-Wno-deprecated-implementations

常見(jiàn)的警告類(lèi)型有:

1, 聲明變量未使用  "-Wunused-variable"
2, 方法定義未實(shí)現(xiàn)  "-Wincomplete-implementation"
3, 未聲明的選擇器  "-Wundeclared-selector"
4, 參數(shù)格式不匹配  "-Wformat"
5, 廢棄掉的方法    "-Wdeprecated-declarations"
6, 不會(huì)執(zhí)行的代碼  "-Wunreachable-code"
7, 指針類(lèi)型不匹配  "-Wincompatible-pointer-types"
8, 沒(méi)有實(shí)現(xiàn)已聲明的方法 "-Wincomplete-implementation"
9, -沒(méi)有實(shí)現(xiàn)協(xié)議的方法"  "-Wprotocol"
10, 尚未聲明的函數(shù)(通常指c函數(shù)) "-Wimplicit-function-declaration"
11, 使用performSelector可能會(huì)出現(xiàn)泄漏 "-Warc-performSelector-leaks"
12.[-Wimplicit-retain-self]
Block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior
13蹲盘、[-Wstrict-prototypes]
block 中的void
14股毫、-Warc-retain-cycles
capturing 'self' strongly in this block is likely to lead to a retain cycle
15、[-Wunreachable-code]
code will never be executed

添加完確實(shí)少了很多召衔,很有效果铃诬。

還有一萬(wàn)多個(gè):

添加完所有:

image.png

這個(gè)也是一把雙刃劍,添加上就沒(méi)有相關(guān)的警告了薄嫡,自己要多注意代碼規(guī)范了氧急。
自己慢慢探索吧!

Xcode 的內(nèi)存終于下來(lái)了毫深,終于解決了我的問(wèn)題,現(xiàn)在運(yùn)行十幾秒就運(yùn)行起來(lái)了毒姨,不考慮其它的問(wèn)題哑蔫,還是挺流暢的。

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弧呐,一起剝皮案震驚了整個(gè)濱河市闸迷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俘枫,老刑警劉巖腥沽,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸠蚪,居然都是意外死亡今阳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)茅信,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盾舌,“玉大人,你說(shuō)我怎么就攤上這事蘸鲸⊙矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵酌摇,是天一觀的道長(zhǎng)膝舅。 經(jīng)常有香客問(wèn)我嗡载,道長(zhǎng),這世上最難降的妖魔是什么仍稀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任洼滚,我火速辦了婚禮,結(jié)果婚禮上琳轿,老公的妹妹穿的比我還像新娘判沟。我一直安慰自己,他們只是感情好崭篡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布挪哄。 她就那樣靜靜地躺著,像睡著了一般琉闪。 火紅的嫁衣襯著肌膚如雪迹炼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天颠毙,我揣著相機(jī)與錄音斯入,去河邊找鬼。 笑死蛀蜜,一個(gè)胖子當(dāng)著我的面吹牛刻两,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播滴某,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼磅摹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了霎奢?” 一聲冷哼從身側(cè)響起户誓,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎幕侠,沒(méi)想到半個(gè)月后帝美,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晤硕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年悼潭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窗骑。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡女责,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出创译,到底是詐尸還是另有隱情抵知,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站刷喜,受9級(jí)特大地震影響残制,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掖疮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一初茶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浊闪,春花似錦恼布、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盖腿,卻和暖如春爽待,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翩腐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工鸟款, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茂卦。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓何什,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親等龙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子富俄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容