Xcode跑老项目运行慢内存一直暴涨一直未响应

前言

年前时候接手了一个五六年前的老项目,有一些问题已经解决了,之前在老版本的Xcode上面运行也还能接手,一两分钟运行起来,现在切换到Xcode 15上面运行,调试,每一次真的是要命,运行5,6,7,8十来分钟,巨慢,警告六七万个,内存动辄十几二十几G,Mac内存经常发出不足警告,高峰时三十多G,实在是不能忍受,严重影响开发效率,伤Mac。

温馨提示

如果着急不用看前面的解决历程,直接看最后的终极解决方案——Xcode 消除各种警告

目前问题现状

image.png

很多这个警告:

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

警告

因为这个项目里面引用的库,太多,还有第三方的项目,乱七八糟,啥都有,导致现在越来越慢,重复的东西太多,还不能乱改,牵一发而动全身。

解决历程

针对这个问题,网上一通找,其实已经多次试图解决这个问题,但始终没有找到切实可行的方法,
网上大概的解决方法:

  1. 打开File---workspace setting...---Build System:选择Legacy Build System。
    老项目还是用老的编译系统吧。
image.png

但是很可惜,新版本的Xcode已经没有这个选项了

image.png
  1. 还有说是发现组件内的所有文件在编译的时分都会有几个相似的正告。

这些正告来自同一个文件,通过pch文件引证。

有正告的文件是是很早以前建立的,文件里边没有自动生成NS_ASSUME_NONNULL_BEGIN文件内大概有很多个正告。在编译文件的时分,这些警告都会去做缓存、分析。导致运行起来十分卡顿。

给出的处理方法:
消除警告,从头编译,发现项目跑起来十分的酣畅!

如果是有其他第三方库或许组件的警告,能够在Podfile中添加 :inhibit_warnings => true 来防止编译的时分查看警告。这种方式也会加速编译速度。

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

  1. 针对这个问题:
    Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

在项目中的类中基本上都加了:

NS_ASSUME_NONNULL_BEGIN

NS_ASSUME_NONNULL_END
也没有什么用,依旧还是很慢,

  1. 可能跟3这个有关系,最近太忙,没时间来搞这个,等等再说。

阶段性小结——

以上这些方法都是然并卵,基本没有任何效果,目前还没有解决我的问题,发挥大家的力量,有类似解决的提供一下解决方法,不胜感激。

终极解决方案——Xcode 消除各种警告

简单粗暴,直接消除警告,项目里面的警告是在是太多,一个一个的改,要改到天荒地老,要吐血。

首先点击这个警告,右键->reveal in log就能看到警告的详细描述,就能看到[]里面的字符就是警告对应的标识符。

如果Reveal in Log不可点击或者点击无效,可以重新编译或者重启下Xcode

比如 Implicit conversion loses integer precision: ‘NSInteger’ (aka ‘long’) to ‘int32_t’ (aka ‘int’) 警告 显示的就是 -Wno-shorten-64-to-32。其中 -W是前缀,这个前缀表示的是 打开这种类型的警告 如果我们是要关闭某种类型的警告的话, 要将 -W换成 -Wno- ,也就是 -Wno-shorten-64-to-32。

  1. 如果整个项目都不想显示这个警告,就可以在Build Setting里加上这个标示符,Build Setting里搜索Other Warning Flags里添加关闭警告的命令。

  2. 如果只是针对某个文件不想显示这个警告,则可以Build Phases->Compile Sources下找到相应的文件在Compiler Flags下面加上命令即可。如果只是针对一段代码不显示某个警告,可以加上如下代码

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

//这里是会报警告的代码

#pragma clang diagnostic pop

如果不想显示通过cocoapod导入的第三方库的警告,则可以直接在Podfile文件里加入inhibit_all_warnings!,加在platform下面就可以。

忽略警告类型

忽略警告类型

-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

常见的警告类型有:

1, 声明变量未使用  "-Wunused-variable"
2, 方法定义未实现  "-Wincomplete-implementation"
3, 未声明的选择器  "-Wundeclared-selector"
4, 参数格式不匹配  "-Wformat"
5, 废弃掉的方法    "-Wdeprecated-declarations"
6, 不会执行的代码  "-Wunreachable-code"
7, 指针类型不匹配  "-Wincompatible-pointer-types"
8, 没有实现已声明的方法 "-Wincomplete-implementation"
9, -没有实现协议的方法"  "-Wprotocol"
10, 尚未声明的函数(通常指c函数) "-Wimplicit-function-declaration"
11, 使用performSelector可能会出现泄漏 "-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

添加完确实少了很多,很有效果。

还有一万多个:

添加完所有:

image.png

这个也是一把双刃剑,添加上就没有相关的警告了,自己要多注意代码规范了。
自己慢慢探索吧!

Xcode 的内存终于下来了,终于解决了我的问题,现在运行十几秒就运行起来了,不考虑其它的问题,还是挺流畅的。

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容