目前我想改进我的应用程序的结构,我想要做的是访问我在另一个类的第一个CCLayer(Cocos2D)类中创建的属性。现在显然我可以分配它,然后我可以访问它,但随后init方法被调用,事情就从那里走下坡路。
无论如何,有没有办法可以在我的其他CCLayer类中访问该属性而无需再次分配它?
另外,我的应用程序中已经有一个Singleton,但我有很多变量,它已经变得如此混乱。除了使用Singleton之外还有其他方法吗?
我已经将属性设置为我需要在没有分配技术的情况下在另一个类中访问它。
谢谢!
答案 0 :(得分:2)
我对cocos知之甚少,但在Objective C中,你需要简单地找到对相关对象的引用来访问它的属性。
有几种方法可以从其他对象访问对象:
NSDictionary
)或一个缓存(NSCache
),可让您通过程序分配给它们的字符串键找到对象的实例。答案 1 :(得分:0)
你需要的是一个Singleton类。我通常这样做:
标题强>:
#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];