Xcode 版本

Xcode 15-beta2

1. 编译冲突

1.1 Observation

三方RxSwift库里的Observable和系统Observation 库新增的 Observable协议有冲突

1.1.1 现象

系统Observation 库新增 Observable协议

public protocol Observable {
}

1.1.2 解决方案

方案1. 使用RxSwift的Observable时,指定命名空间

 RxSwift.Observable

方案2. 设置别名指定命名空间下的类名

public typealias Observable = RxSwift.Observable

1.2 ImageResource

三方库Kingfisher的ImageResource和系统库DeveloperToolsSupport的ImageResource冲突

1.2.1 现象

'ImageResource' is ambiguous for type lookup in this context

1.2.2 解决方案

https://developer.apple.com/forums/thread/20066

方案1:设置别名指定命名空间下的类名

public typealias ImageResource = Kingfisher.ImageResource

方案2:直接用传参做类型推断

2. Xcode编译策略调整

2.1 return 后面的代码编译策略调整

xcode 15,return 后面的代码会作为return的参数处理。

下面的报错只是作为参数处理时,校验错误的一种。

核心是rerun后面的代码会被编译执行。

需要处理return后面跟有代码的场景。

2.1.1 现象

2.1.2 解决方案

问题核心是基于作用域的概念,return作用域内后面没有代码就行,几种适配方案:

方案1. 删除return后面的代码

方案2. return后面加分号

方案3. return 放在一个显式作用域内 。如 花括号、预编译宏等

2.1.3 拓展demo

3. 编译link问题

3.1 现象

clang: error: unable to execute command: Segmentation fault: 11
clang: error: linker command failed due to signal (use -v to see invocation)

3.2 解决方案

https://developer.apple.com/forums/thread/731089

Project->target->Build Settings->Other linker Flags 路径下,添加 -ld64