作者howdiun (Howdiun)
看板MacDev
標題Re: [問題] 如何做到類似Java的跨物件呼叫?
時間Wed Aug 5 09:40:06 2015
沒有class var但是有static class
如果你去google通常會跟你說用dispatch_once
以下提供另一種obj-c的方案
首先新增一個ClassA
在ClassA.m裡面實作
static ClassA *a;
+ (ClassA *)sharedInstance {
if (!a) {
a = [[self alloc] init];
}
return a;
}
在ClassA.h裡面放下
+ (ClassA *)sharedInstance;
之後只要使用[ClassA sharedInstance]就可以了
之後在.h裡面宣告
@property (nonatomic, assign) NSInteger *x;
就可以用[ClassA sharedInstance].x取得類似class var的東西
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.75.221.136
※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1438738808.A.BBC.html
推 cryinglove: 08/05 16:56
→ darktt: 如果要在多執行緒中使用還是建議是用dispatch_once 08/05 17:11
→ darktt: 另外是有最不安全的使用方式就是在h檔的interface定義變數 08/05 17:12
→ darktt: 在定義的{}裡面加上@public,這樣子它下面的變數就會公開 08/05 17:13
→ darktt: 這樣子就可以使用ClassA *a = [ClassA new]; 08/05 17:14
→ darktt: NSInteger x = a->x;取值 08/05 17:15
→ uranusjr: 這個一定要用 dispatch_once 的, 你這樣寫根本是 race 08/05 18:37
→ uranusjr: condition waiting to happen... 08/05 18:38
→ howdiun: PO文長知識了 感謝版友開導 08/06 09:15