Re: [問題] 如何做到類似Java的跨物件呼叫?

作者: howdiun (Howdiun)   2015-08-05 09:40:06
沒有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的東西
作者: darktt (小朱)   2015-08-05 17:11:00
如果要在多執行緒中使用還是建議是用dispatch_once另外是有最不安全的使用方式就是在h檔的interface定義變數在定義的{}裡面加上@public,這樣子它下面的變數就會公開這樣子就可以使用ClassA *a = [ClassA new];NSInteger x = a->x;取值
作者: uranusjr (←這人是超級笨蛋)   2015-08-05 18:37:00
這個一定要用 dispatch_once 的, 你這樣寫根本是 racecondition waiting to happen...
作者: howdiun (Howdiun)   2015-08-06 09:15:00
PO文長知識了 感謝版友開導

Links booklink

Contact Us: admin [ a t ] ucptt.com