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