我想弄清楚如何集中我在我的一些ViewControllers中使用的方法。我已經有了一個我正在用於某些變量的單例。我調用了單例類Shared。調用公共方法
我搬到我的方法來共享類,並試圖調用它像這樣:
m.createdAt = [Shared getUTCFormateDate:[messageObject objectForKey:@"created_at"]];
它給了我一個異常說,當它試圖把它的選擇不存在。
我已經導入Shared.h。任何其他的想法,將不勝感激。
我想弄清楚如何集中我在我的一些ViewControllers中使用的方法。我已經有了一個我正在用於某些變量的單例。我調用了單例類Shared。調用公共方法
我搬到我的方法來共享類,並試圖調用它像這樣:
m.createdAt = [Shared getUTCFormateDate:[messageObject objectForKey:@"created_at"]];
它給了我一個異常說,當它試圖把它的選擇不存在。
我已經導入Shared.h。任何其他的想法,將不勝感激。
如果你的類被命名爲「共享」,那麼它看起來像你試圖調用類方法而不是一個實例方法。所以,你需要用+而不是 - 來聲明方法。
我以爲我有加號,但你說得對。就是這樣!謝謝。 – 2011-04-30 16:47:07
這裏是在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]
;
享受
謝謝。儘管我已經使用了共享變量,但我已經有了一個可用的單例。這是我試圖調用Shared方法的地方。我忘記了+號。 – 2011-04-30 16:46:42
如果你打算使用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