发布日期:2025-10-19 09:58浏览次数:
昨天吭哧吭哧赶项目进度,新招的小伙子提交了一坨Swift代码,直接把我整懵了。Xcode弹满屏红字就跟放鞭炮似的,血压蹭蹭往上飙。今天就唠唠这些年踩过的Swift坑,新手上路记得绕道走!
刚接手这项目时手欠点了升级,Xcode 15和Swift 5.9装完直接傻眼。编译报错“Module compiled with Swift 5.8 cannot be imported by Swift 5.9 compiler”,第三方库全罢工。骂骂咧咧翻文档,发现得在Build Settings里把Library Search Paths清空,再手动添加$(TOOLCHAIN_DIR)/usr/lib/swift-5.9。折腾半小时才让项目跑起来,键盘差点被我砸了。
上周做图片缓存功能,写着写着突然闪退,控制台飘着“EXC_BAD_ACCESS”这鬼东西。排查半天发现是闭包捣乱:
老老实实改成:
* { [weak self] inself?.* = downloadedImage
内存泄漏才算消停。
实习生提交的登录模块老崩溃,debug发现这行代码:let username = userDict["name"] as! String。好家伙,服务器返个null就直接崩。拎着他耳朵改了三次才记住套路:
现在看见感叹号就想抽人。
用CocoaPods引入个二维码库,pod install完编译报“Undefined symbol: _OBJC_CLASS_$_XXXX”。查了仨小时发现:
昨儿换Swift Package Manager更邪门儿,分支更新后依赖项死活不刷新,在File里勾选“Reset package caches”才救回来。
做消息推送时alertController点完没释放,内存蹭蹭涨。打印deinit发现根本没调用,揪出来是这行: *()
闭包把self圈死了,改成[weak self] in才解开。现在看见闭包就先条件反射敲weak。
*(UIAlertAction(title: "确定", style: .default) { _ in
凌晨两点改完一个报错,窗外保安都开始巡逻了。新项目在模拟器跑通的瞬间,忽然想起刚用Swift时被optional链式调用支配的恐惧。下次再有人跟我说Swift简单,我直接把Xcode崩溃日志拍他脸上。