update: 动态库、静态库的编译链接细节

This commit is contained in:
FantasticLBP
2025-06-23 01:18:55 +08:00
parent aca020701b
commit 1142064d28
129 changed files with 10932 additions and 2615 deletions

View File

@@ -113,4 +113,23 @@
13. Xcode 运行项目,模拟器启动失败。报错 `Failed to start launchd_sim: could not bind to session, launchd_sim may have crashed or quit respond`
- 关闭Xcode在终端中键入以下命令sudo chmod 1777 /tmp
- 清理此路径中的dyld文件夹/Library/Developer/CoreSimulator/Caches
- 重新启动Xcode完成
- 重新启动Xcode完成
14. Xcode 自动设置 __nonnull.
升级到 Xcode 10 , 新建类的时候发现头文件中多了2个宏
NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END
作用
这两个东西是Nonnull区域设置(Audited Regions) 。
这两个宏之间的代码里的所有简单指针对象都被默认为 ___nonnull我们只需要去指定 __nullable 的指针。
2014 年的 Apple WWDC 发布了强语言 swift 必须要指定一个对象是否为空。为了迎合swiftOC中增加了 __nullable 和 ___nonnull 用于指定对象是否为空。
每个属性、方法都指定 ___nonnull 和 __nullable 是一件非常繁琐的事。为了减轻开发工作量苹果提供了两个宏NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 。这两个宏之间的代码里的所有简单指针对象都被默认为 ___nonnull我们只需要去指定 __nullable 的指针。
解决的问题
- 减少冗余代码:避免在每个属性、方法参数或返回值前手动添加 nonnull提高代码简洁性。
- 提升类型安全性:编译器会对默认的 nonnull 指针进行静态检查,传递 nil 时会触发警告。
- 改善 Swift 互操作性Swift 能识别这些注解,将 nonnull 指针转换为非可选类型(如 String将 nullable 指针转换为可选类型(如 String?),使接口更清晰。