You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XCode中Objective-C游戏项目引入Swift常量文件的方法

在Objective-C类中使用Swift定义的常量的正确步骤

1. 正确定义可被Objective-C访问的Swift常量

在GameplayConstants.swift中,要让Objective-C能识别常量,必须用@objc修饰,遵循Objective-C的可见规则:

  • 若为类级静态常量,需将类标记为@objc并继承NSObject(或用@objcMembers简化):
import Foundation

@objc class GameplayConstants: NSObject {
    @objc static let REGULAR_TIME_PER_FRAME: Float = 0.1
}
  • 若为全局常量,直接给常量加@objc修饰:
import Foundation

@objc let REGULAR_TIME_PER_FRAME: Float = 0.1

2. 不要直接引入Swift源文件

你碰到的missing @end错误,是因为Objective-C无法直接解析Swift语法。Xcode会自动生成桥接头文件,用来打通Objective-C和Swift的访问,你需要引入这个自动生成的文件,而非直接#include Swift源文件。

3. 引入自动生成的桥接头文件

在HeroAnimationhelper.m中,引入格式为[你的项目名]-Swift.h的桥接头文件(替换成你实际的项目名称):

#import "YourProjectName-Swift.h"

注意:这个文件是Xcode自动生成的,无需手动创建,只要项目里有Swift文件且Defines Module已设为YES,就会自动生成。

4. 在Objective-C中访问Swift常量

  • 类级静态常量通过类名访问:
float timePerFrame = GameplayConstants.REGULAR_TIME_PER_FRAME;
  • 全局常量直接使用常量名:
float timePerFrame = REGULAR_TIME_PER_FRAME;

5. 额外配置检查

  • 确认Product Module Name(Build Settings -> Packaging下)与项目名称一致,这是桥接头文件命名的依据。
  • 确保GameplayConstants.swift和HeroAnimationhelper.m的Target Membership一致,都属于同一个target。

内容的提问来源于stack exchange,提问作者The Outstanding Question Asker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:30:33