编写简单Swift结构体代码时触发signal SIGABRT错误,求排查方案
错误原因及修复方案
问题1:属性观察器中错误引用全局变量引发循环访问
在Game结构体的score属性didSet方法里,直接引用全局变量game.score会导致属性更新时触发对自身的重复访问,进而引发运行时SIGABRT异常。在结构体的属性观察器中,应通过self访问当前实例属性,或直接使用属性名即可。
问题2:使用中文全角引号导致语法错误
代码中print(“Score is now \(game.score)”)的引号是中文全角格式,Swift无法识别,这会引发编译或运行时错误,需替换为英文半角引号。
修复后的代码
import Cocoa struct Game { var score = 0 { didSet { print("Score is now \(score)") } } } var game = Game() game.score += 10 game.score -= 3 game.score += 1 print(game.score)
运行后输出结果:
Score is now 10 Score is now 7 Score is now 8 8
内容的提问来源于stack exchange,提问作者jzuraf
相关产品推荐
相关产品推荐

