0

目前我想改进我的应用程序的结构,我想做的是访问我在另一个类中的第一个 CCLayer (Cocos2D) 类中创建的属性。现在显然我可以分配它然后我可以访问它但是然后调用 init 方法并且事情从那里走下坡路。

无论如何,有什么方法可以访问我的其他 CCLayer 类中的属性而无需再次分配它?

此外,我的应用程序中已经有一个 Singleton,但其中有很多变量,它变得如此混乱。除了使用单例之外,还有其他方法吗?

我已经设置了属性,只是我需要在另一个类中访问它而无需分配技术。

谢谢!

4

2 回答 2

2

我对 cocos 了解不多,但是在 Objective C 中,您需要简单地找到对相关对象的引用才能访问其属性。

有几种方法可以从其他对象访问对象:

  • 将需要访问其属性的对象实例传递给需要执行访问的初始化器或对象的另一个设置器
  • 创建一个单例实例并添加一个类方法来访问它
  • 创建一个映射 ( NSDictionary) 或一个缓存 ( NSCache),让您可以通过程序分配给它们的字符串键来定位对象的实例。
于 2012-05-29T01:50:20.040 回答
0

你需要的是一个单例类。我通常是这样做的:

标题

#import <Foundation/Foundation.h>

@interface Configuration : NSObject {
    NSString *serverPath;
    NSString *configurationServicePath;
}

// Single instance
+ (Configuration *) configuration;

实施

@implementation Configuration
@synthesize serverPath, configurationServicePath;

- (id)init {
    self = [super init];
    if (self) {
      // init
    }

    return self;
}


+ (Configuration *) configuration
{
    static Configuration *configuration;

    @synchronized(self)
    {
        if (!configuration) {
            configuration = [[Configuration alloc] init];
        }   

        return configuration;
    }
}

因此,每次使用您的类时,您都可以使用以下行获取实例(如果已经有,如果没有,则只创建一次实例):

Configuration configuration = [Configuration configuration];
于 2012-05-29T01:47:58.407 回答