2012-05-29 91 views
0

目前我想改進我的應用程序的結構,我想要做的是訪問我在另一個類的第一個CCLayer(Cocos2D)類中創建的屬性。現在很明顯,我可以分配它,然後我可以訪問它,但隨後init方法被調用,事情就從那裏開始下降。在不分配該類的情況下訪問另一個類中的屬性?

無論如何,有沒有辦法可以在我的其他CCLayer類中訪問屬性而無需再次分配它?

此外,我已經在我的應用程序中有一個Singleton,但我有這麼多的變量,它變得如此混亂。除了使用Singleton還有其他的方法嗎?

我已經有了屬性設置它,只需要在另一個類中訪問它而無需分配技術。

謝謝!

+0

您是否考慮過創建一個引用第一個CCLayer並使用它訪問第二個CCLayer中的屬性的單例類? – WendiKidd

+0

你的意思是什麼?「事情只是走下坡路」?如果您需要訪問某個類的屬性,則需要擁有該類的一個實例。您或者需要創建一個新的或者獲得對已經創建的那個的引用。發佈一些代碼可以幫助我們幫助你。 –

+0

這意味着我的init方法中的所有內容都可以分配兩次,這就是爲什麼我要弄清楚這一點。 –

回答

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]; 
+0

我在我的應用程序中有一個Singleton,但有那麼多的變量和東西在那裏,它變得凌亂。 Theres沒有其他辦法? –

+0

但是,那麼你應該改變你的問題,並形成它,如果沒有其他選擇,而不是單身人士課程。 – Prine

+0

@iBradApps我會說這是最好的方法。單例(在這種情況下)的目的是保存很多類需要訪問的變量。我敢肯定,他們*是*其他方式,但這工作:) – WendiKidd

2

我對Cocos知之甚少,但在Objective C中,您只需找到對該對象的引用即可訪問其屬性。

有幾種方法可以從其他對象訪問對象:

  • 傳遞對象的實例屬性而你只需要進入到初始化或對象的另一制定者需要進行訪問
  • 創建一個單一實例,並添加一個類的方法來訪問這個
  • 創建地圖(NSDictionary)或緩存(NSCache),可以讓你通過你的程序分配給他們一個字符串鍵定位對象的實例。
相關問題