2011-04-30 126 views
0

我想弄清楚如何集中我在我的一些ViewControllers中使用的方法。我已經有了一個我正在用於某些變量的單例。我調用了單例類Shared。調用公共方法

我搬到我的方法來共享類,並試圖調用它像這樣:

m.createdAt = [Shared getUTCFormateDate:[messageObject objectForKey:@"created_at"]]; 

它給了我一個異常說,當它試圖把它的選擇不存在。

我已經導入Shared.h。任何其他的想法,將不勝感激。

+0

如果你打算使用Singleton,基本上唯一的辦法就像在其他iOS應用程序中一樣 - 只需使用Matt Gallagher着名的單例宏文件:http://cocoawithlove.com/2008/11/ singletons-appdelegates-and-top-level.html鏈接到實際文件:http://projectswithlove.com/projects/SynthesizeSingleton.h.zip編程中的許多問題都解決了:這是其中之一。 – Fattie 2011-04-30 20:39:35

回答

1

如果你的類被命名爲「共享」,那麼它看起來像你試圖調用類方法而不是一個實例方法。所以,你需要用+而不是 - 來聲明方法。

+0

我以爲我有加號,但你說得對。就是這樣!謝謝。 – 2011-04-30 16:47:07

0

這裏是在objective-c中創建一個單例的正確模式:(我使用一個用戶對象的例子,取自我在前面打開的代碼)。同時,請注意,單件類和靜態類的方法之間的差異,如這裏討論。在.h文件Difference between static class and singleton pattern?

,聲明返回您的類的實例一個靜態方法。

+(User *) currentUser; 
在.m文件

,創建一個保存您的實例

static User * _user; 

那麼,在您的m類的靜態變量,創建您的「公共」靜態accesor GET返回或實例化並返回您的靜態變量

+ (User *) currentUser 
    { 

     if (!_user) 
     { 
      _user =[[User alloc]init]; 
      // ... init the singleton user properties and what not 
      // ... 
     } 

     return _user; 

    } 

然後,當你想在你的Singleton類叫你只要確保User.h是進口的,並呼籲[[User currentUser] someMethodorProperty];

享受

+0

謝謝。儘管我已經使用了共享變量,但我已經有了一個可用的單例。這是我試圖調用Shared方法的地方。我忘記了+號。 – 2011-04-30 16:46:42