作者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://webptt.com/cn.aspx?n=bbs/MacDev/M.1438738808.A.BBC.html
1F:推 cryinglove: 08/05 16:56
2F:→ darktt: 如果要在多执行绪中使用还是建议是用dispatch_once 08/05 17:11
3F:→ darktt: 另外是有最不安全的使用方式就是在h档的interface定义变数 08/05 17:12
4F:→ darktt: 在定义的{}里面加上@public,这样子它下面的变数就会公开 08/05 17:13
5F:→ darktt: 这样子就可以使用ClassA *a = [ClassA new]; 08/05 17:14
6F:→ darktt: NSInteger x = a->x;取值 08/05 17:15
7F:→ uranusjr: 这个一定要用 dispatch_once 的, 你这样写根本是 race 08/05 18:37
8F:→ uranusjr: condition waiting to happen... 08/05 18:38
9F:→ howdiun: PO文长知识了 感谢版友开导 08/06 09:15