Xcode 13使用AppleScript框架无法将UI与AppleScript代码绑定如何解决?
问题原因
这是Xcode 13及以上版本AppleScriptObjC项目的默认类识别逻辑改动,不属于Bug,旧版本教程里无需预编译直接拖拽绑定的操作已经不适用当前版本。
解决步骤
- 第一步:提前写好AppleScript代码里的出口和动作定义,示例参考如下:
script AppDelegate property parent : class "NSObject" -- 提前定义好需要绑定的UI出口 property theWindow : missing value -- 提前定义好需要绑定的触发动作 on buttonClickHandler_(sender) display dialog "Hello World" buttons {"确认"} default button "确认" end buttonClickHandler_ end script
- 第二步:写完代码后按
Command + B手动编译一次项目,Xcode 13不会主动扫描未编译的AppleScript代码里的类、属性和方法定义,必须先编译才能被Interface Builder识别。 - 第三步:回到故事板界面,选中蓝色立方体样式的「Delegate」图标,切换到右侧身份检查器,确认
Class下拉框选中的是AppDelegate,再进行Ctrl拖拽绑定操作,此时Outlet和Action列表会正常识别你提前定义的内容。
兜底修复方案
如果执行上述操作后仍然无法正常识别,按以下步骤清理配置:
- 按
Command + Shift + K清理项目构建缓存 - 打开项目的「Build Settings」面板,搜索
AppleScript Other Linker Flags配置项,添加参数-lAppleScriptObjC - 重启Xcode后重新执行编译、绑定操作即可
内容的提问来源于stack exchange,提问作者bomtailey
相关产品推荐
相关产品推荐

