如果我正确理解了您的 Java 模型,那么您没有理由不能将其直接翻译成 Objective-C,这当然具有您熟悉它的优势——在您学习一门新语言时很有帮助。
通过“主游戏类实例化了一些库,并在需要时静态访问”,我认为:
- 主类声明了适当类型的全局变量并对其进行了初始化;或者
- 类本身有一个全局变量,它保存对它们自身实例的引用。
您不会在这里生成“单例”,而只是要共享的对象。还鉴于您的主要课程创建了它们,它们始终存在。结合这意味着您无需使用任何“单例”方案,这些方案将创建延迟到第一次使用并处理一次性线程安全初始化。
你所需要的只是 Objective-C 中全局变量的模型。概括地说,这是:
extern在头文件中声明变量
- 在实现文件中定义变量
概括地说,您的MainGame.h:
#import "SharedGameObject.h"
@interface MainGame : NSObject
extern SharedGameObject *TheSharedGameObject;
...
@end
和MainGame.m
#import "MainGame.h"
SharedGameObject *TheSharedGameObject;
- (id) init
{
TheSharedGameObject = [SharedGameObject new];
...
}
现在,所有其他导入MainGame.h的类都可以使用TheSharedGameObject. 这是 Apple 使用的模型NSApplication,它关联了NSApp全局变量。
高温高压