我有 4 个使用类 M1 的类(C1、C2、C3、C4)。 M1 保存模型和所有数据。 M1 可以由任何 Cx 类实例化(如果尚未实例化)。如果是,那么我不想创建它的另一个实例,只是获取指向存在的 M1 实例的指针,因此可以在那里使用数据。
我该怎么做?有没有办法搜索类的实例?
最佳答案
这是 the standard Cocoa (pseudo-)singleton implementation 的行为:
+ (instancetype)sharedInstance
{
static id sharedInstance;
static dispatch_once_t token;
dispatch_once(&token, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
让 Cn 类仅通过此类方法访问 M1,您将始终使用相同的实例。
其他类仍然可以使用+alloc
或+new
以通常的方式创建自己的M1 实例。 (这就是为什么这是一个伪单例。)
这种共享访问也不一定是 M1 公共(public)接口(interface)的一部分。您可以轻松地将其放入仅对 Cn 类可见的类别方法中。
关于c++ - 如何获取指向已从另一个类实例化的类的实例的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191376/