mirror of
https://github.com/NohamR/knowledge-kit.git
synced 2026-05-25 12:27:15 +00:00
update: 动态库、静态库的编译链接细节
This commit is contained in:
@@ -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 ,必须要指定一个对象是否为空。为了迎合swift,OC中增加了 __nullable 和 ___nonnull 用于指定对象是否为空。
|
||||
每个属性、方法都指定 ___nonnull 和 __nullable 是一件非常繁琐的事。为了减轻开发工作量,苹果提供了两个宏:NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 。这两个宏之间的代码里的所有简单指针对象都被默认为 ___nonnull,我们只需要去指定 __nullable 的指针。
|
||||
|
||||
解决的问题
|
||||
|
||||
- 减少冗余代码:避免在每个属性、方法参数或返回值前手动添加 nonnull,提高代码简洁性。
|
||||
- 提升类型安全性:编译器会对默认的 nonnull 指针进行静态检查,传递 nil 时会触发警告。
|
||||
- 改善 Swift 互操作性:Swift 能识别这些注解,将 nonnull 指针转换为非可选类型(如 String),将 nullable 指针转换为可选类型(如 String?),使接口更清晰。
|
||||
Reference in New Issue
Block a user